解析xml有四种方法:DOM,SAX,DOM4j,JDOM.
我们主要学了两种:DOM和SAX.
DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件。各有各的好。
DOM和SAX的不同:
1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。而SAX是基于事件的。当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间。
2. DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能对XML进行读取,而不能在文件中插入数据。这也是SAX的一个缺点。
3.SAX的另一个缺点:DOM我们可以指定要访问的元素进行随机访问,而SAX则不行。SAX是从文档开始执行遍历的。并且只能遍历一次。也就是说我们不能随机的访问XML文件,只能从头到尾的将XML文件遍历一次(当然也可以中间截断遍历)。
Dom解析
example1.xml
引用
<?xml version="1.0" ?>
<Root>
<A>
<B>
<Teacher name="Liucy">
C++
</Teacher>
<Teacher name="Huxz">
Java
</Teacher>
</B>
</A>
</Root>
ParseXmlwithDom1.java
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class ParseXmlwithDom1 {
public static void main(String[] args) throws Exception{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=dbf.newDocumentBuilder();
Document doc=builder.parse("example1.xml");
/*
Element root=doc.getDocumentElement();
*/
//NodeList nl=root.getChildNodes();
NodeList nl=doc.getElementsByTagName("Teacher");
for(int i=0;i<nl.getLength();i++){
Node n=nl.item(i);
/*
short s=n.getNodeType();
if (s==Node.ELEMENT_NODE){
*/
System.out.print("Element:");
Element e=(Element)n;
System.out.print(e.getTagName());
System.out.print(" name="+e.getAttribute("name"));
System.out.println(" textContent="+e.getTextContent().trim());
/*}
if (s==Node.TEXT_NODE){
System.out.print("Text:");
Text t=(Text)n;
String text=t.getTextContent().trim();
System.out.println(text);
}
*/
}
}
}
控制台输出:
Element:Teacher name=Liucy textContent=C++
Element:Teacher name=Huxz textContent=Java
SAX解析:
引用
<?xml version="1.0" ?>
<Root>
<Teacher1 name="Liucy">
C++
</Teacher1>
<Teacher2 name="Huxz">
Java
</Teacher2>
</Root>
ParseXmlwithSAX.java
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import static java.lang.System.*;
public class ParseXmlwithSAX {
public static void main(String[] args) throws Exception {
SAXParserFactory fact=SAXParserFactory.newInstance();
SAXParser parser=fact.newSAXParser();
DefaultHandler dh=new MyHandler();
parser.parse("example2.xml",dh);
}
}
class MyHandler extends DefaultHandler{
public void characters(char[] cs, int start, int length) throws SAXException {
String str=new String(cs,start,length).trim();
if (str.length()==0) return;
out.println("处理文本 "+str);
}
public void endDocument() throws SAXException {
out.println("文档结束");
}
public void endElement(String uri, String localName, String qName) throws SAXException {
out.println("标记结束 "+qName);
}
public void startDocument() throws SAXException {
out.println("文档开始");
}
public void startElement(String uri, String localName, String qName, Attributes as) throws SAXException {
out.println("标记开始 "+qName);
if (as.getLength()!=0) {
String value=as.getValue("name");
out.println("name="+value);
}
}
}
控制台输出:
文档开始
标记开始 Root
标记开始 Teacher1
name=Liucy
处理文本 C++
标记结束 Teacher1
标记开始 Teacher2
name=Huxz
处理文本 Java
标记结束 Teacher2
标记结束 Root
文档结束
分享到:
相关推荐
XML解析方式是一种高效且灵活的方法,能够帮助我们实现这一目标。本篇文章将详细探讨如何利用Java和XML解析来自动化创建Word文档。 首先,我们需要了解XML的结构。XML(Extensible Markup Language)是一种标记语言...
### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`是一种高效的流式XML解析器,适用于处理大型XML文档或当只需要读取文档的部分内容时。 - **特点**: - **...
xml解析方式包括w3c dom,sax,xpp,stax,vtd方式,其实还有jdom和xmlevent这样才够全面
它提供了一种高效但功能有限的XML解析方式,不支持修改XML文档,适用于大文件或网络流: ```csharp using (XmlReader reader = XmlReader.Create("example.xml")) { while (reader.Read()) { if (reader....
总结,这三种XML解析方式各有优劣。DOM适合小规模、快速访问的数据;PULL和SAX适合大规模、低内存占用的情况,其中PULL更易于使用,而SAX对资源的利用更高效。在实际开发中,应根据项目需求和XML文件大小选择合适的...
总结来说,XML解析方式有DOM、SAX和Pull解析,其中XPP3作为Pull解析的一种实现,以其高效和灵活的特性在处理XML时具有优势。通过集成XPath,XPP3进一步提升了查询和处理XML文档的能力。在开发过程中,根据项目需求和...
Pull解析是Android特有的XML解析方式,它类似于SAX解析,也是事件驱动的,但提供了更简洁的API。Pull解析器非常适合在有限的内存环境中处理XML,例如在Android设备上。以下是一个基本的Pull解析示例: ```java ...
### Java常用的四种XML解析方式详解 #### 一、DOM(Document Object Model)解析 DOM是一种树状结构的解析方式,由W3C推荐标准。它将XML文档转换为树形结构,每个节点都是一个对象,可以对这些对象进行读取、修改等...
XML(eXtensible Markup Language)是一种用于存储和传输数据的...在实际开发中,根据项目需求和资源限制选择合适的XML解析方式至关重要。理解SAX和DOM的特性可以帮助我们更好地处理XML数据,提高程序的效率和稳定性。
对于XML的处理,Android提供了三种主要的解析方式:DOM(Document Object Model)、SAX(Simple API for XML)和PULL(Pull Parser)。下面将详细介绍这三种解析方式及其特点。 1. DOM解析: DOM解析器会将整个XML...
在iOS开发中,有两种主要的XML解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析: DOM解析器会将整个XML文档加载到内存中,构建一个树形结构,每个节点代表XML文档的一部分。这种...
本篇将详细探讨Android中的三种XML解析方式:DOM解析、SAX解析和Pull解析。 1. DOM解析(Document Object Model) DOM解析器会将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这种解析方式的优点是能够...
常见的解析方式有DOM(Document Object Model)和SAX(Simple API for XML)两种。DOM解析器会将整个XML文档加载到内存中,形成一个树形结构,适合小规模数据处理;SAX解析器则是事件驱动的,逐行读取XML,适合处理...
- **DOM解析**:JavaScript中最常见的XML解析方式是通过DOM解析器,它将XML文档转换为DOM树,每个元素、属性和文本节点都成为DOM树的一部分。例如,`DOMParser`对象可用于解析XML字符串: ```javascript var ...
总结来说,Android中的XML解析有DOM、SAX和Pull Parser三种主要方法。DOM适合小型文件,提供完整的文档结构;SAX适合大型文件,节省内存但需编写较多处理代码;而Pull Parser则结合了两者优点,既节省内存又提供了...
XML(eXtensible Markup Language)是一...总之,这个“XML解析工具类”是一个便捷的资源,提供了多种XML解析方式,适用于不同的场景和需求。不论你是初学者还是经验丰富的开发者,都能从中受益,更高效地处理XML数据。
Android系统提供了三种主要的XML解析方式:DOM(Document Object Model)、PULL(Pull Parser)和SAX(Simple API for XML)。每种方法都有其独特的特性和应用场景,下面将详细介绍这三种XML解析方式。 1. DOM解析...
java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。...在实际应用中,开发者应根据项目需求,权衡性能、易用性和资源消耗,选择最适合的XML解析方式。
二、XML解析方式 1. DOM解析:Document Object Model(DOM)解析器将整个XML文档加载到内存中,形成一棵元素树,便于遍历和修改。这种方式适合小到中型的XML文件,因为内存消耗较大。 2. SAX解析:Simple API for ...