简单小记:DEMO见附件
package test; import java.io.FileWriter; import java.net.URL; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.XPath; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class DOM4JTest { public static void main(String[] args) throws Exception{ DOM4JTest test = new DOM4JTest(); //step 1 Document doc = test.parseDocument(new URL("file:applicationContext.xml")); //step 2-1 // test.usingIterator1(doc); //step 2-2 // test.usingIterator2(doc); //step 2-3 // test.usingIterator3(doc); //step 2-4 // test.elements(doc); //step 3-1 // test.xpath1(doc); //step 3-2 // test.xpath2(doc); //step 4 // test.treeWalker(doc.getRootElement()); //step 5 // Document d = test.create(); // test.treeWalker(d.getRootElement()); //step 6-1 // test.output1(test.create()); //step 6-2 // test.output2(test.create()); //step 6-3 // test.output3(test.create()); //step 7-1 // test.convert1(doc); //step 7-2 // test.convert2(); //step 8 test.insert(doc); } //解析document----new SAXReader().read(URL) public Document parseDocument(URL url) throws Exception{ //SAX=Simple Api for XML SAXReader reader = new SAXReader(); Document document = reader.read(url); return document; } //遍历子元素iterator------element.elementIterator public void usingIterator1(Document document){ Element root = document.getRootElement(); System.out.println(root.getName()); Iterator iterator = root.elementIterator(); while(iterator.hasNext()){ Element element = (Element)iterator.next(); //相对于根[/]的path===>return /beans/bean System.out.println(element.getPath()); //相对于参数Element元素的path System.out.println(element.getPath(root.getParent())); System.out.println(element.getName()); System.out.println("#################################"); } } //根据name-标签名遍历子元素---element.elementIterator(name) public void usingIterator2(Document document){ Element root = document.getRootElement(); //遍历name=param的所有子元素 Iterator iterator = root.elementIterator("test2"); while(iterator.hasNext()){ Element element = (Element)iterator.next(); System.out.println(element.getName()); System.out.println("#################################"); } } //遍历元素的属性---element.attributeIterator(name) public void usingIterator3(Document document){ Element root = document.getRootElement(); //遍历name=param的所有子元素 Iterator iterator = root.elements().get(0).attributeIterator(); while(iterator.hasNext()){ Attribute attribute = (Attribute)iterator.next(); System.out.println(attribute.getName()); System.out.println(attribute.getData()); System.out.println(attribute.getPath()); System.out.println(attribute.getText()); System.out.println("#################################"); } } //列表LIST遍历 public void elements(Document document){ // List elements = document.getRootElement().elements("bean"); List elements = document.getRootElement().elements(); for(Object obj : elements){ System.out.println(((Element)obj).getName()); } } //xpath的支持需要xpath库-jaxen.jar //XPATH----List list = document.selectNodes(//path) public void xpath1(Document document){ //xpath接口用法- // XPath xpathSelector = DocumentHelper.createXPath("//beans/test1"); // List list = xpathSelector.selectNodes(document); List list = document.selectNodes("//beans/test1"); for(Object obj : list){ Element element = (Element)obj; System.out.println(element.getName()); } System.out.println("#####################################################"); //xpath-属性选择 list = document.selectNodes("//beans/test1[@id!='userService1']"); for(Object obj : list){ Element element = (Element)obj; System.out.println(element.valueOf("@id")); } System.out.println("#####################################################"); //xpath-序号选择####序号从1开始 list = document.selectNodes("//beans/test1[@id!='userService1'][2]"); for(Object obj : list){ Element element = (Element)obj; System.out.println(element.valueOf("@id")); } } //XPATH----selectSingleNode|node.valueOf("@attributeName") public void xpath2(Document document){ Node node = document.selectSingleNode("//beans"); System.out.println(node.getName()); System.out.println("#####################################################"); //selectSingleNode仅选择一个Node,若有多个并列的Node,则选择第一个 node = document.selectSingleNode("//beans/bean"); System.out.println(node.valueOf("@class")); } //递归遍历 public void treeWalker(Element element){ for(int i = 0;i < element.nodeCount();i++){ Node node = element.node(i); System.out.println(node.getPath()); if(node instanceof Element){ treeWalker((Element)node); } } } //创建XML public Document create(){ //或DocumentHelper.createDocument(空)==>建立无根document,再add Element root = DocumentHelper.createElement("xmlRoot") .addAttribute("hehe", "ai"); Document document = DocumentHelper.createDocument(root); //链式!!! Element author1 = root.addElement("author") .addAttribute("name", "haimingwei") .addAttribute("age", "dead") .addAttribute("gender", "male") .addText("author1_text"); Element author2 = root.addElement("author") .addAttribute("name", "seven") .addAttribute("age", "100") .addAttribute("gender", "male") .addText("author2_text"); return document; } //output public void output1(Document document) throws Exception{ FileWriter fw = new FileWriter("dom4j_text.xml"); document.write(fw); //不close竟然输出文件中没有内容 fw.close(); } //output-format public void output2(Document document) throws Exception{ //compact紧凑格式 //OutputFormat format = OutputFormat.createCompactFormat(); //漂亮格式 OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileWriter("dom4j_text.xml"),format); writer.write(document); writer.close(); } //output-输出到console public void output3(Document document) throws Exception{ //compact紧凑格式 //OutputFormat format = OutputFormat.createCompactFormat(); //漂亮格式 OutputFormat format = OutputFormat.createPrettyPrint(); //OutputFormat可设置编码 format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(System.out,format); writer.write(document); writer.close(); } //Document===>String public void convert1(Document document){ String xmlStr = document.asXML(); System.out.println(xmlStr); } //String===>Document[DocumentHelper.parseText] public void convert2() throws Exception{ String xmlStr = "<bean id=\"dataSource\" class=\"org.springframework.jdbc.datasource.DriverManagerDataSource\">" + "<property name=\"driverClassName\" value=\"com.mysql.jdbc.Driver\"/>" + "<property name=\"url\" value=\"jdbc:mysql://localhost:3306/frame\"/>" + "<property name=\"username\" value=\"root\"/><property name=\"password\" value=\"\"/></bean>"; Document doc = DocumentHelper.parseText(xmlStr); this.output3(doc); } //insert-复制[dom4j中clone为深克隆]一个元素并插入 public void insert(Document document) throws Exception{ Element element = document.getRootElement().elements().get(0); Element newElement = (Element)element.clone(); //????content() List childList = element.getParent().elements(); childList.add(element.getParent().indexOf(element),newElement); //重新写回XML文件 - -! XMLWriter writer = new XMLWriter(new FileWriter("applicationContext.xml"),new OutputFormat().createPrettyPrint()); writer.write(document); writer.close(); } }
相关推荐
在XML解析方面,有两种主要的解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM将整个XML文档加载到内存中形成一个树形结构,方便随机访问任何部分,但占用资源较多。SAX是事件驱动的解析器...
4. **性能优化**:对于大量数据抓取,可能需要考虑其他更高效的库,如DOMDocument或Goutte。 ### 应用场景 SimpleHtmlDom广泛应用于网页爬虫、数据挖掘、网站自动化测试等领域。通过结合cURL或file_get_contents等...
1. **XML解析**:DOM4J支持两种主要的XML解析方式——DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析将整个XML文档加载到内存中,形成一个树形结构,适合小规模或结构固定的XML文档。SAX则是一...
《XPath与XML解析:DOM4J与JAXEN深度探讨》 XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件、文档结构化存储等领域。在处理XML时,XPath(XML Path Language)作为一种强大的...
在Java编程中,处理XML文件是常见的任务,而`demo4j`通常指的是一个演示如何使用Java库解析XML的示例项目,这里的`dom4j-1.6.1`则是一个具体的XML解析库版本。 `dom4j`是一个功能强大的Java XML API,它提供了丰富...
本示例"XMLDemo_java.rar"是基于Java实现的XML处理程序,涵盖了SAX(Simple API for XML)和DOM(Document Object Model)两种解析方式。 1. **SAX解析**: SAX是一种事件驱动的解析器,它不会一次性加载整个XML...
本文将详细介绍XML文件的四种解析方式,包括DOM、JDOM、DOM4J和SAX。 1. DOM(Document Object Model)解析: DOM是W3C推荐的一种解析XML的标准方法。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...
1. **XML解析**:DEMO可能使用了DOM(Document Object Model)、SAX(Simple API for XML)或XMLPullParser等解析器,它们分别有不同的优缺点。DOM将整个XML文档加载到内存中,适合小到中型的文件;SAX是事件驱动的...
在Demo4j中,你可以找到使用Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类来解析XML的示例。例如,通过`DocumentBuilder.parse()`方法加载XML文件,然后通过`getElementsByTagName()...
4. JDOM或DOM4J库:这些是Java中的第三方XML处理库,提供了更简洁的API,可以简化XML操作。例如,JDOM的`Element`类直接对应XML元素,可以通过方法直接添加子元素、属性等。 5. JAXB(Java Architecture for XML ...
DOM4J不仅支持DOM,还引入了XPath(一种在XML文档中查找信息的语言)和SAX(Simple API for XML)解析,使得处理XML更加高效。 **安装DOM4J** 在Java项目中,你可以通过Maven或Gradle等构建工具来添加DOM4J依赖。...
在实际应用中,处理XML文件可能涉及到错误处理、DOM(Document Object Model)和SAX(Simple API for XML)解析策略的选择,以及XPath或XSLT(XSL Transformations)等高级功能的使用,用于查询和转换XML数据。...
有两种解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM将整个文档加载到内存中,适合小型文档;SAX是事件驱动的,适用于大型文档。 6. **XPath (XML Path Language)**:一种语言,用于在...
- 解析XML文档是为了提取其中的信息,通常通过DOM(Document Object Model)、SAX(Simple API for XML)和XMLReader等方法实现。 2. **C#中的XMLReader** - XMLReader是.NET框架中用于高效、向前只读、事件驱动...
SSDP(Simple Service Discovery Protocol)是UPnP(Universal Plug and Play)框架的一部分,主要用于在网络中发现提供特定服务的设备。这个“ssdp_java_demo”是一个Java实现的SSDP设备发现的示例,可以帮助开发者...
SAX(Simple API for XML)是XML解析的一种方法,与DOM(Document Object Model)解析器不同,SAX采用事件驱动的方式,以流式处理XML文档,因此它更适用于处理大型XML文件,因为它不会将整个文档加载到内存中。...
4. `demo_window_simple_playback.html` 和 `demo_window_simple_preview.html`: 这两个文件分别展示了简单的回放和预览功能,它们可能提供了基本的用户界面和交互逻辑,以便用户快速体验海康监控系统的操作。...
标题 "jquery simpledemo1" 暗示我们即将探讨的是一个基于 jQuery 的简单示例项目。jQuery 是一个广泛使用的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互等任务。这个项目的目的是为初学...
然而,提供的压缩包文件列表中只有一个名为`dom4j-2.0.2.jar`的文件,这实际上是指DOM4J库,而非`demo4j`。DOM4J是一个非常流行的Java XML API,它提供了灵活且高性能的方式来处理XML文档。下面我们将详细探讨DOM4J...