- 浏览: 829798 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
这是自己整理的xml解析,参考了网上的例子:
1、jdom解析
dom解析:
dom4j解析:
rax解析:
<?xml version="1.0" encoding="UTF-8"?> <catalog> <!--An XML Catalog--> <books title="XML Zone" publisher="IBM developerWorks"> <book level="Intermediate" date="December-2001"> <title>Java OO Book</title> <author>author</author> </book> </books> </catalog>
1、jdom解析
package cn.xml; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; /** * yicha * Dec 2, 2008 JDom解析 */ public class JDomParse { /** * @param args * @throws IOException * @throws FileNotFoundException * @throws JDOMException */ public static void main(String[] args) throws FileNotFoundException, IOException, JDOMException { String xmlpath="c:/catalog.xml"; //使用JDOM首先要指定使用什么解析器 SAXBuilder builder=new SAXBuilder(false);//这表示使用的是默认的解析器 //得到Document,以后要进行的所有操作都是对这个Document操作的 Document doc=builder.build(xmlpath); //得到根元素 Element root=doc.getRootElement(); //得到元素(节点)的集合 List bookslist=root.getChildren("books"); //轮循List集合 for (Iterator iter = bookslist.iterator(); iter.hasNext();) { Element books= (Element) iter.next(); List bookList=books.getChildren("book"); for(Iterator it=bookList.iterator();it.hasNext();){ Element book= (Element) it.next(); //取得元素的属性 String level=book.getAttributeValue("level"); System.out.println(level); //取得元素的子元素(为最低层元素)的值 注意的是,必须确定book元素的名为“name”的子元素只有一个。 String author=book.getChildTextTrim("author"); System.out.println(author); //改变元素(为最低层元素)的值;对Document的修改,并没有在实际的XML文档中进行修改 book.getChild("author").setText("author_test"); } } //保存Document的修改到XML文件中 // XMLOutputter outputter=new XMLOutputter(); // outputter.output(doc,new FileOutputStream(xmlpath)); } }
dom解析:
package cn.xml; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; /** * yicha * Dec 1, 2008 * DOM解析 */ public class DomPhase { /** * @param args */ public static void main(String[] args) { long lasting =System.currentTimeMillis(); try{ File f=new File("c:/catalog.xml"); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc = builder.parse(f); NodeList nl = doc.getElementsByTagName("author"); for (int i=0;i<nl.getLength();i++){ System.out.println("firstname:" + doc.getElementsByTagName("firstname").item(i).getFirstChild().getNodeValue()); System.out.println(" lastname:" + doc.getElementsByTagName("lastname").item(i).getFirstChild().getNodeValue()); } }catch(Exception e){ e.printStackTrace(); } System.out.println("运行时间:"+(System.currentTimeMillis() - lasting)+" 毫秒"); } }
dom4j解析:
package cn.xml; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * yicha * Dec 1, 2008 */ public class Dom4JPhase { /** * 产生xml文档 */ public void generateDocument(){ //使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类 Document document = DocumentHelper.createDocument(); //使用 addElement()方法创建根元素catalog , addElement()用于向 XML 文档中增加元素 Element catalogElement = document.addElement("catalog"); //在 catalog 元素中使用 addComment() 方法添加注释"An XML catalog" catalogElement.addComment("An XML Catalog"); //在 catalog 元素中使用 addProcessingInstruction() 方法增加一个处理指令 (不知有什么用) // catalogElement.addProcessingInstruction("target","text"); //在 catalog 元素中使用 addElement() 方法增加 journal 节点 Element booksElement = catalogElement.addElement("books"); //使用 addAttribute() 方法向 book节点添加 title 和 publisher 属性 booksElement.addAttribute("title", "XML Zone"); booksElement.addAttribute("publisher", "IBM developerWorks"); //添加子节点 Element bookElement=booksElement.addElement("book"); //添加属性 bookElement.addAttribute("level", "Intermediate"); bookElement.addAttribute("date", "December-2001"); //添加节点 Element titleElement=bookElement.addElement("title"); //添加内容 titleElement.setText("Java OO Book"); //添加节点 Element authorElement=bookElement.addElement("author"); //添加节点 authorElement.setText("author"); //可以使用 addDocType() 方法添加文档类型说明 //这样就向 XML 文档中增加文档类型说明: // document.addDocType("catalog","nikee","file://c:/Dtds/catalog.dtd"); try{ FileOutputStream fos=new FileOutputStream("c:/catalog.xml"); OutputFormat of=new OutputFormat(" ", true); XMLWriter xw=new XMLWriter(fos, of); xw.write( document ); xw.close(); } catch(IOException e) { System.out.println(e.getMessage()); } } /** * 读取xml文件的元素值 * @param list */ public void getXMLValue(List list){ // List list=element.elements(); if(list==null||list.size()==0){ return; } for(int i=0;i<list.size();i++){ Element foo = (Element) list.get(i); System.out.println(foo.getName()+"="+foo.getData().toString().trim()); List result=foo.elements(); if(result!=null||result.size()>0){ this.getXMLValue(result);//递归 } } } /** * 根据节点名获取值 * @param fileName * @param name */ public void getElement(String fileName,String name){ Document document = this.readXML(fileName); Element root=this.getRootElement(document); // 枚举名称为name的节点 for ( Iterator i = root.elementIterator(name); i.hasNext();) { Element foo = (Element) i.next(); System.out.println(foo.getName()+"="+foo.getData()); } // 枚举所有子节点 // for ( Iterator i = root.elementIterator(); i.hasNext(); ) { // Element foo = (Element) i.next(); // System.out.println(foo.getName()+"="+foo.getData()); // } } /** * 根据节点名获取值 * @param fileName * @param name */ public void getAttribute(Element element,String name){ // 枚举属性 for ( Iterator i = element.attributeIterator(); i.hasNext(); ) { Attribute attribute = (Attribute) i.next(); System.out.println(attribute.getName()+"="+attribute.getData()); } } /** * 得到root节点 * @param doc * @return */ public Element getRootElement(Document doc){ return doc.getRootElement(); } /** * 读取xml文件 * @param fileName * @return 返回document对象 */ public Document readXML(String fileName){ SAXReader saxReader = new SAXReader(); Document document=null; try { document = saxReader.read(new File(fileName)); }catch(Exception e){ System.out.println("readXML has error:"+e.getMessage()); e.printStackTrace(); } return document; } /** * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中 * @param 待遍历的XML文件 */ public void iterateWholeXML(String filename){ Document document = this.readXML(filename); Element root=this.getRootElement(document); List list=root.elements(); this.getXMLValue(list); } public static void main(String[] argv){ Dom4JPhase dom4j=new Dom4JPhase(); dom4j.generateDocument(); String fileName="c:/catalog.xml"; String elementName="book"; // dom4j.generateDocument(); long lasting = System.currentTimeMillis(); dom4j.iterateWholeXML(fileName); // dom4j.getElement(fileName, elementName); System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + " 毫秒"); } }
rax解析:
package cn.xml; /** * yicha * Jul 3, 2008 */ import java.net.URL; import java.util.Properties; import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*; /** * SAX 解析 * @author yicha * */ public class SAXReader extends DefaultHandler { /*props:用于存放解析器解析出来的的节点和节点对应的属性,为哈希表 * currentName:当前节点的名称 * currentValue:用于存放当前节点所对应的属性值 */ private Properties props; private String currentName; private StringBuffer currentValue = new StringBuffer(); public SAXReader() { this.props=new Properties(); } public Properties getPrpos() { return this.props; } public String getCurrentName(){ return currentName; } /* * 读取<xxx>中的值xxx并将其付给qname,通知解析器解析当前节点对应的值。同时对currentValue缓冲器清空,用来保存当前qname对应属性值。 * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) */ public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException{ currentValue.delete(0,currentValue.length()); this.currentName=qName; } /*读取<xxx></xxx>之间的属性值,并将其首先以字符形式保存至字符数组ch中,并记录对应长度,以确保以 * length为长度的字符为一个整体,然后讲字符数组中的内容按照length长度为整体加到currentValue缓冲器中 * 每次读取xml文件后只会在ch中保存当前所解析到的值,currentValue中也只会有当前的节点所对应的唯一值 */ public void characters(char[] ch,int start,int length) throws SAXException { currentValue.append(ch,start,length); } /* 当遇到</xxx>时,将当前的qname,和qname所对应的位于currentValue缓冲器中的值保存到props这个哈希表中去,供外部程序调用 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String) */ public void endElement(String uri, String localName, String qName) throws SAXException { props.put(qName.toLowerCase(), currentValue.toString().trim()); } public static void main(String args[]) { long lasting = System.currentTimeMillis(); String fileName="c:/catalog.xml"; SAXParserFactory sf = SAXParserFactory.newInstance(); SAXParser sp; try { sp = sf.newSAXParser(); SAXReader reader = new SAXReader(); sp.parse(new InputSource(fileName), reader); } catch (Exception e) { e.printStackTrace(); } System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒"); } }
package cn.xml; import java.net.URL; import java.util.Iterator; import java.util.Properties; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * yicha * Dec 1, 2008 */ public class SaxPhase { private Properties props; public SaxPhase(){ props=new Properties(); } public Properties getProps(){ return this.props; } public void parse(String filename) throws Exception { //实例化解析器 SAXReader handler = new SAXReader(); //实例化用于分析的工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); //实例化分析类 SAXParser parser = factory.newSAXParser(); //得到xml文件对应的路径 URL confURL = SAXReader.class.getClassLoader().getResource(filename); try{ parser.parse(confURL.toString(), handler); props = handler.getPrpos(); }finally { //销毁已过期对象 factory=null; parser=null; handler=null; } } /* * 提供给外部程序调用的用于返回程序所对应需要的xml文件属性的方法 */ public String getElementValue(String elementName) { //elementValue:对应于elementName的节点的属性值 String elementValue=null; elementValue=props.getProperty(elementName); return elementValue; } /** * @param args */ public static void main(String[] args) { SaxPhase sp=new SaxPhase(); String filename="testXML.xml"; try { sp.parse(filename); Properties props=sp.getProps(); // System.out.println(props.size()+""); Iterator it=props.keySet().iterator(); while(it.hasNext()){ String key=it.next().toString(); System.out.println(props.get(key)+""); } // System.out.println(sp.getElementValue("driver-class")); } catch (Exception e) { e.printStackTrace(); } } }
- xml源码.zip (6.6 KB)
- 下载次数: 45
发表评论
-
Java并发编程:volatile关键字解析
2015-07-30 11:30 636转:http://www.cnblogs.com/dolp ... -
Java内存模型
2015-07-29 13:55 9141. 概述 多任务和 ... -
自定义classloader
2015-07-29 13:54 689转:http://tiantian911.iteye.com ... -
自定义ClassLoader实现java应用核心逻辑模块热部署
2015-07-29 13:51 1022转:http://blog.csdn.net/zhangda ... -
java classloader原理初探
2015-07-29 10:14 668转:http://www.cnblogs.com/ ... -
Java 内存分配全面浅析
2015-07-29 08:52 608转:http://blog.csdn.net/shimi ... -
http stream
2014-07-29 16:38 1142StringBuilder sb = new String ... -
Tomcat远程调试
2011-04-09 12:33 1061需要在Tomcat中的catalina.bat中添加如下的一行 ... -
用jmx监控多台服务器(tomcat)
2010-09-08 18:25 4576因为需要写一个后台监控服务器的程序,涉及到jmx,也涉 ... -
call cmd /c start 一点疑问
2010-09-01 10:16 2249call "cmd /c start aaa.bat ... -
Windows计划任务之schtasks
2010-08-30 13:21 3595创建:SCHTASKS /Create /RU SYSTEM ... -
ajax返回值中有中文存在的乱码现象
2010-08-27 16:28 1446ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即 ... -
MIME TYPE
2010-08-26 16:23 7258最近要做需要在页面上放音频的东西,因此需要用到mime typ ... -
JMX问题
2010-08-20 17:20 5505这个问题貌似是启动tomcat之后就获取不到jmx的链接了,不 ... -
Eclipse控制台乱码
2010-08-05 15:18 4893安装了Eclipse,在运行tomcat时,控制台的中文显示乱 ... -
JMX服务端和客户端的代码
2010-07-27 15:37 3573服务端代码如下 package com.rmi; i ... -
JMX连接Tomcat的JMX测试类
2010-07-27 15:33 3297首先是为了使tomcat支持JMX,必须在tomcat的启动项 ... -
JMX的一个链接类
2010-07-27 09:37 1462package com.pachira.oamp.jmxS ... -
java中文转unicode码
2010-07-22 11:04 43406转载地址:http://www.iteye.com/topic ... -
获取POST数据的值
2010-07-21 14:17 9923当method为POST,Content-Type为 ...
相关推荐
Windows平台提供了多种XML解析工具,这些工具帮助开发者快速、高效地解析和查看XML文档,确保数据的准确性和完整性。本文将详细介绍Windows平台下的一款XML解析工具——foxe_CHS.exe,它是专为中文用户设计的版本。 ...
Libxml2是 GNOME 项目的一个组件,是一个强大的、开源的XML解析库,支持多种XML相关的标准,如XPath、XInclude、XPointer、XML Schema和 Relax NG。 **XML的基本概念:** XML文件由一系列的元素构成,每个元素都有...
SOAP解析,与一般的xml解析不一样,他中间存在报文,解析到就出错了,也就解析不下去,这里举了一个列子,(网络上找了好久都没找到我想要的列子,最后我自己根据例子做了整理做出来的),把数据组合成集合。...
到此我们知道了,当系统出现内存溢出时,是哪些参数设置不合理需要调整。但我们怎么知道服务器启动时,到底JVM内存相关参数的值是多少呢。 在实践中,经常遇到对JVM参数进行设置了,并且自己心里觉得应该不会出现...
昨两天偶然在csdn上学习到Android中解析XML,感觉博主写得清晰易懂,但是未有源码,于是自己整理了一下。学习参考:http://blog.csdn.net/liuhe688/article/details/6415593/
这是一个关于xml解析的案例,主要介绍了dom4j,jdom,W3C的dom解析,以及dom4j,jdom的创建,还有各种解析的优缺点对比。我知道网上有很多博客,但是我这资源的好处是下载了直接就可以导入,连粘贴复制都省了。(如果你...
SAX,全称为Simple API for XML,是一种基于事件驱动的XML解析器,相较于DOM解析,它具有更快的速度和更低的内存占用。DOM解析会将整个XML文档加载到内存中形成一个节点树,适合处理小规模或内存有限的情况。而SAX则...
终于调通安卓调用Webservice,传参并解析XML的样例,使用工具:Android Studio和Eclipse.Eclipse启动WebServer,Android Studio进行Application编码调试。两个工程文件都在压缩包中。喜极而泣。。。
VB解析XML应网友要求,重新整理了此源码,没有的抓紧下载啊,
简单实用的XML解析源码,开发的时候用到所以研究了下,现在分享出来给大家。 下载后取出里面的Markup.cpp和Markup.h,导入你的工程里面,CMarkup类就可以用了。其中的MSXML是另一套解析源码,主要使用COM,大家可以...
Java XML 解析技术详解 XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。在 Java 中,有多种方式来解析 XML 文件,包括 DOM、SAX 和 StAX 等。在本文中,我们将详细介绍这些解析技术,并...
本实验整理集合了XML的基础知识,旨在帮助XML初学者快速入门并掌握其核心概念。 1. **XML的起源与特点** XML起源于HTML,但不同于HTML用于展示网页内容,XML设计的目标是传输和存储数据。它的特点是结构严谨、自我...
XML文档对象模型(DOM)是一种广泛使用的解析XML的方式。DOM允许开发者通过Java代码与XML文档的结构进行交互,就像一棵树,每个元素、属性和文本都是树上的节点。 在Java中,DOM解析通常涉及以下步骤: 1. **创建...
java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom...是学习Java的xml解析的好例子,包括相应的dom4j.jar,jdom.jar等,自己整理的,物超所值啊,奉献上了。
- `XMLParser`:负责XML解析的类,可能根据所选解析器(DOM, SAX, StAX)实现不同方法。 - `Formatter`:处理XML格式化的类,执行添加缩进、换行等操作。 - 可能还有其他辅助类,如用于显示进度的`ProgressMonitor`...
五、XML解析 XML文档可以通过解析器读取和处理,分为DOM(Document Object Model)和SAX(Simple API for XML)两种主要方式: 1. DOM解析:一次性加载整个文档到内存,形成一个树形结构,方便遍历和修改。 2. SAX...
- **解析方式**:常见的 XML 解析方式包括 DOM(Document Object Model)、SAX(Simple API for XML) 和 StAX(Streaming API for XML)。 - **DOM 解析**:DOM 解析将整个 XML 文档加载到内存中,并提供一个树形...
7. **事件驱动的XML解析** 对于大型或流式XML,可以使用`XmlReader`类。它是基于事件的,只在需要时读取数据,节省内存。 8. **XML文档验证** `XmlSchema`类可以帮助验证XML文档是否符合特定的XML模式(Schema)...