-
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </book> <book id="2"> <name>安徒生童话</name> <year>2004</year> <price>77</price> <language>English</language> </book> </bookstore>查看全部
-
package com.imooc.dmtest.test; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class DOMTest { public static void main(String[] args) { // 创建一个DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建一个DocumentBuilder对象 try { // 创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder(); //通过DocumentBuilder对象的parse()方法加载books.xml文件到当前目录下 Document document = db.parse("book.xml"); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }查看全部
-
常用节点类型查看全部
-
空白是一个子节点 换行是一个子节点查看全部
-
DOM方式解析xml查看全部
-
通过alt+/键能看见更多的org.w3c.dom下的类查看全部
-
JDOM的解析<br> 1.获取SAXBuilder对象<br> 2.将文件加载到SAXBuilder中,并获取Document对象<br> 3.通过Document对象获取文件的根节点<br> 4.有了根节点,通过根节点获取它的孩子节点书的集合<br> 5.循环遍历孩子节点集合,通过getAttributes方法获取节点的属性Attribute集合<br> 6.通过attribute的getName和getValue方法分别获取属性的名称和值 7.获得book下的节点,通过book节点对象的getChildren()方法获取子节点的集合 8.再通过子节点的getName和getValue方法获取节点名和节点的值查看全部
-
xml的SAX解析并将解析的内容及xml结构形式保存至Java对象中。 SAX解析: 1、获取一个SAXParserFactory的实例:SAXParserFactory factory = SAXParserFactory.newInstance(); 2、通过factory获取SAXParser实例:SAXParser parser = factory.newSAXParser(); 3、创建SAXParserHandler对象:SAXParserHandler handler = new SAXParserHandler(); 4、将xml文件和解析方式handler加载到SAXParser实例:parser.parse("books.xml",handler); 解析的时候,是startElement-characters-endElement , characters解析完一个属性,就到endElement,然后又解析一个属性又到endElement,最后解析完全部属性,到endElement又到startElement开始下一个节点。 ArrayList保存对象 ArrayList<Book> BookList=new ArrayList<Book>(); BookList.add(book);book=null;后继续遍历 public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException// qName是String类型节点名称;attributes是Attributes类型的实例,属性的意思;查看全部
-
SAX解析步骤: 1、获得SAXParserFactory实例:SAXParserFactory.newInstance() 2、获得parser实例:SAXParserFactory实例.newSAXParser() 3、获得handler实例:新建类继承DefaultHandler,重写startElement和endElement方法进行业务处理查看全部
-
使用Dom解析xml文件的属性节点 一、未知节点属性的个数和属性名时: 1、通过document.getElementByTagName("book")获得所有book的节点集合 2、遍历集合 NodeList.getLength()获得集合长度 3、Node node = NodeList.item(index)获取其中的一个节点 4、通过NamedNodeMap attrs = node.getAttributes()获取所有属性集合 5、遍历集合 attrs.getLength()获得集合长度 6、通过atrrs.item(index)获取book节点的某一个属性 7、attr.getNodeName()获得属性名,attr.getNodeValue()获取属性值 二、已知book节点有且只有1个id属性 1、通过document.getElementByTagName("book")获得所有book的节点集合 2、遍历集合 NodeList.getLength()获得集合长度 3、element book=(element)NodeList.item(i);//强制转换为element类型 4、String attrValue = book.getAttribute("id");//获得属性值查看全部
-
解析节点名与值: 1、获取节点集合:元素.getChildNodes(); 2、获取所有节点名:遍历节点集合,节点.getNodeName() 3、获取节点值:节点.getFirstChild().getNodeValue()或节点.getTextContent() 4、NodeList类的.item(int index) 可通过索引值index获取具体某个节点(name)。(返回Node类型)查看全部
-
JUnit:是Java提供的进行单元测试的自动化工具。 项目右键-->Build Path-->Add Libaries-->JUnit 在方法前加上@Test 通过时间来比较 SAX<DOM==DOM4J<JDOM(DOM4J更灵活,推荐)查看全部
-
DOM: 一次性将xml所有内容置于内存中,并形成一颗倒树。(对于内存要求较高) 优点:形成了树结构,直观好理解,代码更容易编写;解析过程中树结构保留在内存中,方便修改。 缺点:当xml文件较大时,对内存耗费比较大,容易影响解析性能并造成内存溢出。 SAX:基于事件驱动的解析方式 是逐条运行的,会根据当前内容判断应该采用什么方法。 优点:采用事件驱动模式,对内存耗费比较小;适用于只需要处理xml中数据而不考虑结构时使用。 缺点:不易编码;很难同时访问同一个xml中的多处不同数据。 JDOM:仅使用具体类而不使用接口,限制了灵活性;API大量使用了Collection类,对集合类较熟悉时,较方便。 DOM4J:是JDOM的一种智能分支,它合并了许多超出基本xml文档表示的功能;DOM4J使用接口和抽象基本类方法,是一个优秀的JAVA XML API;具有性能优异、灵活性好、功能强大和极端易用使用的特点;是一个开放源代码的软件。性能比JDOM更高。查看全部
-
4种解析方式对比:DOM/SAX/JDOM/DOM4J 基础方法:DOM、SAX DOM:平台无关的官方解析方式 SAX:基于事件驱动的解析方式 扩展方法:JDOM、DOM4J(在基础的方法上扩展出来的,只有Java中能够使用的解析方法)查看全部
-
DOM4J解析xml过程: org.dom4j 1、SAXReader reader = new SAXReader(); 2、Document document = reader.read(); 3、Element rootElement = document.getRootElement(); //得到根节点 4、Iterator it = rootElement.elementIterator(); //通过Element对象的.elementIterator()方法获取迭代器 5、遍历迭代器,获取子节点的信息。强制转换为Element类型。查看全部
举报
0/150
提交
取消