- 浏览: 6359259 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
<students> <student age="25"><!--如果没有age属性,默认的为20--> <name>崔卫兵</name> <college>PC学院</college> <telephone>62354666</telephone> <notes>男,1982年生,硕士,现就读于北京邮电大学</notes> </student> <student age="26"> <name>cwb</name> <college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader--> <telephone>62358888</telephone> <notes>男,1987年生,硕士,现就读于中国农业大学</notes> </student> </students>
JDOM读取:
SAXBuilder builder = new SAXBuilder(); org.jdom.Document doc = builder.build(new File("F:/xmltest.xml")); Element foo = doc.getRootElement(); List allChildren = foo.getChildren(); for (int i = 0; i < allChildren.size(); i++) { System.out.println( ((Element) allChildren.get(i)).getChild("name").getText()); System.out.println("((Element) allChildren.get(i)).getChild("space").getText()); }
DOM4J读取XML:
public void testRead() throws DocumentException, FileNotFoundException{ SAXReader reader=new SAXReader(); Document doc=reader.read("D:/myeclipseWorkspace/Struts/src/test.xml"); Element root =doc.getRootElement(); for(Iterator it=root.elementIterator();it.hasNext();){ Element element=(Element)it.next(); System.out.println(element.attribute("age").getName()+" == "+element.attribute("age").getValue()); System.out.println(element.attributeValue("age")); System.out.println(element.getName()); for(Iterator itt=element.elementIterator();itt.hasNext();){ //System.out.println(element.attributeValue("age")); Element el=(Element)itt.next(); System.out.println(el.getName()+"=="+el.getText()); //getText()获取的是两个标签间的数据如"<name>崔卫兵</name>"中的崔卫兵 //getName()获取的是标签名,即“<student age="25"><name>崔卫兵</name>”中的age和name //attributeValue("age")可获取age的值即25 } System.out.println("=================="); } }
结果:
age == 25 25 student name==崔卫兵 college==PC学院 telephone==62354666 notes==男,1982年生,硕士,现就读于北京邮电大学 ================== age == 26 26 student name==cwb college==PC学院 telephone==62358888 notes==男,1987年生,硕士,现就读于中国农业大学 ================== age == 45 45 student name==xxxxx college==xxx学院 telephone==66666666 notes==注视中,注释中 ================== age == 12 12 student name==lxx college==yyyy学院 telephone==88888888 notes==注视中111,注释中222 ==================
DOM读取XML:
XML文件:
<?xml version="1.0" encoding="gb2312"?> <books> <book attr="T001" id="idd1"> <name>第一本书</name> <price>$14.09</price> </book> <book attr="T002" id="idd2"> <name>第二本书</name> <price>$19.89</price> </book> <book attr="T003" id="idd3"> <name>第三本书</name> <price>$26.00</price> </book> </books>
读取:
public void parserXml2(String fileName) { DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); try { DocumentBuilder dombuilder = domfac.newDocumentBuilder(); // 方法1 Document doc = dombuilder.parse(fileName); /* * 方法2 InputStream is = new FileInputStream("F:\\ABC.xml"); Document * doc = dombuilder.parse(is); */ /* * 方法三如果要解析字符串result= * "<?xml version=\"1.0\" encoding=\"gb2312\"?><books><book attribute=\"T001\"><name>第一本书</name><price>$14.09& lt;/price></book><book attribute=\"T002\"><name>第二本书</name><price>$19.89& lt;/price></book><book attribute=\"T003\"><name>第三本书</name><price>$26.00& lt;/price></book></books>" * ;就用此方法 StringReader rd = new StringReader(result); InputSource is * = new InputSource(rd); Document doc=dombuilder.parse(is); */ Element root = doc.getDocumentElement(); NodeList books = root.getChildNodes(); if (books != null) { for (int i = 0; i < books.getLength(); i++) { Node book = books.item(i); if (book.getNodeType() == Node.ELEMENT_NODE) { String attr = book.getAttributes().getNamedItem("attr").getNodeValue(); String id = book.getAttributes().getNamedItem("id").getNodeValue(); System.out.print(attr+" "+ id); for (Node node = book.getFirstChild(); node != null; node = node .getNextSibling()) { if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeName().equals("name")) { String name = node.getNodeValue(); String name1 = node.getFirstChild().getNodeValue(); System.out.print(" " + name); System.out.print(" " + name1); } if (node.getNodeName().equals("price")) { String price = node.getFirstChild().getNodeValue(); System.out.println(" " + price); } } } } } } } catch (ParserConfigurationException e) { } catch (FileNotFoundException e) { } catch (SAXException e) { } catch (IOException e) { } }
该实例参考:http://www.360doc.com/content/07/1213/14/13829_891246.shtml
二、创建XML
DOM4J创建XML:
/** * 创建XML * @throws Exception */ public void testWrite() throws Exception{ Document document = DocumentHelper.createDocument(); Element root = document.addElement("root"); //根节点 for(int i=0;i<10;i++){ Element element1 = root.addElement("user") .addAttribute("name","Alex"+i) .addAttribute("id", "id"+i) .addText("我是信息"); } XMLWriter writer = new XMLWriter(new FileOutputStream("D:/myeclipseWorkspace/Struts/src/output.xml")); writer.write(document); writer.close(); }
输出方法2:
XMLOutputter XMLOut = new XMLOutputter(); File filePath = new File("D:/temp"); if (!filePath.exists()) { filePath.mkdirs(); } System.out.println("filePath==========="+filePath); XMLOut.output(doc, new FileOutputStream(filePath + "/areaPie.xml"));
结果:
<?xml version="1.0" encoding="UTF-8"?> <root> <user name="Alex0" id="id0">我是信息</user> <user name="Alex1" id="id1">我是信息</user> <user name="Alex2" id="id2">我是信息</user> <user name="Alex3" id="id3">我是信息</user> <user name="Alex4" id="id4">我是信息</user> <user name="Alex5" id="id5">我是信息</user> <user name="Alex6" id="id6">我是信息</user> <user name="Alex7" id="id7">我是信息</user> <user name="Alex8" id="id8">我是信息</user> <user name="Alex9" id="id9">我是信息</user> </root>
JDOM创建XML:
import java.io.FileOutputStream; import java.io.IOException; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.output.XMLOutputter; public class Java2XML { public void BuildXMLDoc() throws IOException, JDOMException { // 创建根节点 list; Element root = new Element("list"); // 根节点添加到文档中; Document Doc = new Document(root); // 此处 for 循环可替换成 遍历 数据库表的结果集操作; for (int i = 0; i < 5; i++) { // 创建节点 user; Element elements = new Element("user"); // 给 user 节点添加属性 id; elements.setAttribute("id", "" + i); // 给 user 节点添加子节点并赋值; // new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值; elements.addContent(new Element("name").setText("xuehui")); elements.addContent(new Element("age").setText("28")); elements.addContent(new Element("sex").setText("Male")); // 给父节点list添加user子节点; root.addContent(elements); } XMLOutputter XMLOut = new XMLOutputter(); // 输出 user.xml 文件; XMLOut.output(Doc, new FileOutputStream("user.xml")); } public static void main(String[] args) { try { Java2XML j2x = new Java2XML(); System.out.println("生成 mxl 文件..."); j2x.BuildXMLDoc(); } catch (Exception e) { e.printStackTrace(); } } } 生成的 user.xml 文件 <?xml version="1.0" encoding="UTF-8"?> <list> <user id="0"> <name>xuehui</name> <age>28</age> <sex>Male</sex> </user> <user id="1"> <name>xuehui</name> <age>28</age> <sex>Male</sex> </user> <user id="2"> <name>xuehui</name> <age>28</age> <sex>Male</sex> </user> <user id="3"> <name>xuehui</name> <age>28</age> <sex>Male</sex> </user> <user id="4"> <name>xuehui</name> <age>28</age> <sex>Male</sex> </user> </list>
该例子来源:http://zc4530.iteye.com/blog/70062
具体XML操作参见:
http://blog.csdn.net/wlh269/archive/2008/08/31/2855461.aspx
DOM4J 学习笔记:
http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/dom4j.html
DOM创建XML方式:
package com.techson.himsnanhwa.admin.web; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class DomDemo{ private Document doc; DomDemo() { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.newDocument(); } catch (ParserConfigurationException e) { System.out.println(e.getMessage()); } } /** * 都是用 doc.createElement("");创建 * 层次结构使用appendChild(name); 实现 */ public void createXml(String fileName) { Element root = doc.createElement("employees"); doc.appendChild(root); Element employee = doc.createElement("employee"); Element name = doc.createElement("name"); name.appendChild(doc.createTextNode("小明")); name.setAttribute("id", "2006414"); //设置id employee.appendChild(name); Element sex = doc.createElement("sex"); sex.appendChild(doc.createTextNode("m")); employee.appendChild(sex); Element age = doc.createElement("age"); age.appendChild(doc.createTextNode("30")); employee.appendChild(age); root.appendChild(employee); TransformerFactory tf = TransformerFactory.newInstance(); try { Transformer transformer = tf.newTransformer(); DOMSource source = new DOMSource(doc); transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); PrintWriter pw = new PrintWriter(new FileOutputStream(fileName)); StreamResult result = new StreamResult(pw); transformer.transform(source, result); System.out.println("生成XML文件成功!"); } catch (TransformerConfigurationException e) { } catch (IllegalArgumentException e) { } catch (FileNotFoundException e) { } catch (TransformerException e) { } } public static void main(String[] args){ String fileName = "D:\\dom2.xml"; DomDemo domDemo = new DomDemo(); domDemo.createXml(fileName); } }
结果:
<?xml version="1.0" encoding="utf-8"?> <employees> <employee> <name id="2006414">小明</name> <sex>m</sex> <age>30</age> </employee> </employees>
总结:
Document document=new SAXReader.reader(“xml文路径/文件名xxx.xml”);//得到Document对象
Element root = document.getRootElement()//获得根节点
Iterator it=root.elementIterator(); //从根节点遍历子节点
Iterator iterator=element.elementIterator(); //再从子节点在遍历其子节点
对节点访问其属性用:Attribute leaderAttr =Element. attribute(“xxx”);
对节点访问其某个属性leaderAttr的名称:leaderAttr.getName();
对节点访问其某个属性leaderAttr的值:leaderAttr.getValue()
对节点访问其名称:Element.getName();
对节点访问其文本:Element. getText();
Element root = document.getRootElement()//获得根节点
Iterator it=root.elementIterator(); //从根节点遍历子节点
Iterator iterator=element.elementIterator(); //再从子节点在遍历其子节点
对节点访问其属性用:Attribute leaderAttr =Element. attribute(“xxx”);
对节点访问其某个属性leaderAttr的名称:leaderAttr.getName();
对节点访问其某个属性leaderAttr的值:leaderAttr.getValue()
对节点访问其名称:Element.getName();
对节点访问其文本:Element. getText();
创建XML:
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root"); //根节点
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root"); //根节点
或
Element root = new Element("pie");
Document doc = new Document(root);
Document doc = new Document(root);
详解Java解析XML的四种方法:
http://developer.51cto.com/art/200903/117512.htm
java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较:
http://hi.baidu.com/drager_000/blog/item/9ba51937a85c533f0b55a961.html
各种属性:
http://yifeng.iteye.com/blog/207239
发表评论
-
【爬虫解析1】:XPath总结
2017-04-05 14:11 5085XPATH教程 1、加载 XML 文档 所有现代 ... -
Digester解析XML文件
2016-11-23 16:50 5134TOMCAT底层解析server.xml ... -
XML工具类XmlUtil
2015-04-07 15:14 6479import org.apache.log4j.Logger ... -
castor - xml与java对象转换-(Unmarshaller.unmarshal)
2014-12-31 16:34 6852Castor简单介绍 Castor功能与应用参考-XML ... -
XML工具类DOMUtil
2014-10-11 16:47 4756import java.io.ByteArrayInput ... -
dom4j处理带命名空间的XML-使用XPath
2014-05-05 09:23 12115XPath 是一门在 XML 文档中查找信息的语言。XPa ... -
XML缓存工具类WebserviceXml
2014-05-04 15:31 1121实现每次代理时,将服务对应的XML Node数据webse ... -
XML中的selectNodes("")
2011-01-08 16:24 478XPath 是 XML 的内容,这 ...
相关推荐
使用DOM4J方法读取XML文件,需要创建SAXReader对象,读取XML文件得到Document对象,然后使用Element对象的elementIterator方法获取指定标签的迭代器,遍历迭代器进行数据提取。 优点:DOM4J方法提供了高效的XML解析...
在使用DOM4j解析XML文件时,首先需要导入DOM4j的相关包,如`SAXReader`用于读取XML文件,`Document`表示整个XML文档,`Element`表示XML文档中的元素,以及`Attribute`表示元素的属性。以下是一个使用DOM4j解析XML...
本文将详细介绍如何使用DOM4J来读取XML文件中的信息。 ### DOM4J读取XML详解 #### 初始化资源路径 代码片段中的`URL url = this.getClass().getClassLoader().getResource("/")`这一行是获取类加载器的根目录路径...
在这个场景中,我们关注的是如何使用DOM4J以String的形式读取XML内容,然后将String的值赋给XML中的特定节点,最后将更新后的内容写回XML文件。下面我们将详细探讨这一过程。 1. **解析XML到String** 要将XML文件...
1. **DOM读取XML**:使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来创建解析器并解析XML。解析完成后,可以通过`getElementsByTagName`、`getElementById`等方法访问元素。 2. **DOM...
在压缩包中的“xml_6.pdf”文件可能包含了更详细的JDOM和DOM4J解析XML的教程,包括代码示例和最佳实践,建议进一步阅读以加深理解。 总的来说,JDOM和DOM4J都是强大的XML处理工具,选择哪个取决于具体项目的需求。...
通过`SAXReader`可以读取XML文件,并利用事件回调来处理XML事件,如开始元素、结束元素等。 6. **DOM4J与JDOM的对比**: JDOM是另一个Java XML库,它专注于DOM模型。相比JDOM,DOM4J在功能上更强大,API设计更加...
在本文中,我们将深入探讨如何利用DOM4J进行XML文件的读取、写入和修改操作。 一、XML基础 XML(Extensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它具有自解释性,使得数据在不同的系统间...
标题中的“通过Dom4j创建和读取xml文件”指的是使用Java库Dom4j来处理XML文档的操作。Dom4j是一个灵活且功能丰富的Java XML API,它提供了多种方式来解析、创建、修改XML文档。本知识点主要涵盖以下几个方面: 1. *...
XML(eXtensible Markup Language)是...以上代码展示了如何使用DOM4J、DOM、JDOM和SAX解析和创建XML文件的基本方法。这些示例适合初学者了解XML处理的基础知识,随着经验的积累,可以根据实际需求选择合适的解析方式。
从读取XML文档到写入,再到查询和修改,DOM4J都有对应的API来简化这些任务。同时,理解并熟练运用XPath可以使XML操作更为高效。在实际开发中,选择合适的XML处理库取决于项目需求和个人偏好,DOM4J因其全面的功能而...
- **读取XML文件**:使用`DocumentBuilder`或`SAXReader`读取XML文件内容。 - **获取Document对象**:解析后得到一个`Document`对象,它是XML文档的顶级节点。 - **遍历元素和属性**:通过`Element`对象的`elements...
1. **读取XML文件**:使用`DocumentBuilder`或`SAXReader`类读取XML文件并创建`Document`对象。 2. **遍历XML结构**:通过`Element`对象的`elementIterator()`方法进行迭代,或者使用XPath表达式获取特定节点。 3. *...
在Java中解析XML文件,可以使用DOM4J库的`SAXReader`类来读取XML文档,并通过`Document`类来操作XML结构。例如,以下代码展示了如何使用DOM4J解析XML文件并获取元素的属性值: ```java SAXReader reader = new ...
- 解析XML文件:使用`DocumentReader`或`SAXReader`读取XML文件并构建DOM4J树形结构。 - 遍历XML:利用`Node`接口的方法如`childNodes()`,`elements()`遍历XML结构。 - XPath查询:通过`XPathExpression`执行...
在dom4j中,读取XML文件可以使用SAXReader或DOMReader两种方式。SAXReader是基于事件驱动的XML解析器,可以处理大型XML文件,具有高效率和低内存占用等特点。DOMReader是基于文档对象模型的XML解析器,可以将整个XML...
要使用DOM4J读取XML文件,首先需要创建一个`SAXReader`实例,然后用它来读取文件并得到Document对象。例如: ```java File file = new File("testXML.xml"); SAXReader reader = new SAXReader(); Document ...
相比Dom4j,JDOM可能更适合那些希望用Java原生方式操作XML的开发者,而Dom4j则在灵活性和性能上具有优势。 总的来说,Dom4j是一个强大的XML处理库,它的API设计得易于理解和使用,对于Java开发者来说,是处理XML...
DOM4J与JDOM、SAX、StAX等其他XML解析器相比,DOM4J提供了更丰富的功能,如XPath支持、XML Schema处理和事件驱动的解析模式。它既适合大型文档的处理,也适用于内存有限的环境。然而,对于非常大的XML文档,可能需要...
在DOM4J中,我们首先需要读取XML文件并将其解析为Document对象。这可以通过`SAXReader`类完成。以下是一个简单的例子: ```java SAXReader reader = new SAXReader(); Document document = reader.read("example...