- 浏览: 6303073 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (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 5012XPATH教程 1、加载 XML 文档 所有现代 ... -
Digester解析XML文件
2016-11-23 16:50 5036TOMCAT底层解析server.xml ... -
XML工具类XmlUtil
2015-04-07 15:14 6404import org.apache.log4j.Logger ... -
castor - xml与java对象转换-(Unmarshaller.unmarshal)
2014-12-31 16:34 6768Castor简单介绍 Castor功能与应用参考-XML ... -
XML工具类DOMUtil
2014-10-11 16:47 4691import java.io.ByteArrayInput ... -
dom4j处理带命名空间的XML-使用XPath
2014-05-05 09:23 11976XPath 是一门在 XML 文档中查找信息的语言。XPa ... -
XML缓存工具类WebserviceXml
2014-05-04 15:31 1070实现每次代理时,将服务对应的XML Node数据webse ... -
XML中的selectNodes("")
2011-01-08 16:24 478XPath 是 XML 的内容,这 ...
相关推荐
用DOM SAX JDom dom4j 对xml文档解析实例 在学习孙鑫老师视频教程,自己照着敲的源码,希望对大家有帮助
读取XML文件的四种方法,详细介绍了dom,jdom,dom4j,sax
DOM、JDOM、DOM4J解析XML实例
dom4j解析xml文件的压缩包,完整版。对jdom进行了封装。包含源码,jar包以及所需的全部内容。
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与
xml doc sax jdom dom4j完全讲解xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax jdom dom4j完全讲解 xml doc sax ...
jdom dom4j dom4j-1.6.1.jar JAR包
DOM JDOM dom4j 实例源码 DOM JDOM dom4j 实例源码
XML解析四种解析方式 DOM SAX JDOM DOM4J
用用4中方式(dom4j、jdom、dom、sax)解析xml
DOM、JDOM、DOM4J解析XML实例.pdf
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...
JDOM、Dom4j操作xml文档 创建xml xpath query xml元素,完成xml的创建、节点的创建、修改、遍历,xpath的遍历xml节点元素
XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细XML的四种解析器原理及性能比较,超详细
NULL 博文链接:https://zhaohong.iteye.com/blog/426761
总结DOM、SAX、JDOM、DOM4J读写xml文档的多种方法。
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...
本文列举了jdom和jdom4j解析xml文档的常用方法,根据实际操作进行总结出xml操作技术与方法。
jdom学习读取xml文件 对学习SPRING有帮助