xml文件解析工具,请问大佬有MSXML(微软xml解析器) V6.10.1129.0软件免费百度云资源吗
xml文件解析工具,请问大佬有MSXML(微软xml解析器) V6.10.1129.0软件免费百度云资源吗详细介绍
本文目录一览: MSXML是什么东西?有什么用?
msxml指微软的xml语言解析器,用来解释xml语言的。就好像html文本下载到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。要使用xml文件就一定要用到xml parser。不过不仅仅微软有,像ibm,sun都有自己的xml parser。
扩展资料:MSXML.DLL所包括的主要的COM接口有:
1、DOM Document
DOMDocument对象是XML DOM的基础,你可以利用它所暴露的属性和方法来允许你浏览、查询和修改XML文档的内容和结构。DOMDocument表示了树的顶层节点。
它实现了DOM文档的所有的基本的方法并且提供了额外的成员函数来支持XSL和XSLT。它创建了一个文档对象,所有其他的对象都可以从这个文档对象中得到和创建。
2、IXML DOMNode
IXMLDOMNode是文档对象模型(DOM)中的基本的对象,元素,属性,注释,过程指令和其他的文档组件都可以认为是IXMLDOMNode,事实上,DOMDocument对象本身也是一个IXMLDOMNode对象。
3、IXML DOM NodeList
IXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来,可以通过“for...next”结构来遍历所有的节点。
4、IXMLDOMParseError
IXMLDOMParseError接口用来返回在解析过程中所出现的详细的信息,包括错误号,行号,字符位置和文本描述。
参考资料:百度百科-msxml
msxml指微软的xml语言解析器,用来解释xml语言的。就好像html文本下载到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。要使用xml文件就一定要用到xml parser。
拓展资料:MSXML 包含 SDK软件开发套件,这是微软公司所出的语言解析器,它已经被应用于最新的游戏。
它的全名是:「Microsoft XML Core Services」,主要是用来执行或开发经由 XML 所设计的最新应用程序。
MSXML是微软开发的用来处理XML的核心组件。是微软的xml语言解析器,用来解释xml语言的。
就好像html文本下载到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。
MSXML的 全名是:「MicrosoftXMLCoreServices」,主要是用来执行或开发经由XML所设计的最新应用程序。
在MSXML解析器使用过程中,我们可以使用文档中的createElement方法来创建一个节点装载和保存XML文件。通过load或者是loadXML方法可以从一个指定的URL来装载一个XML文档。Load(LoadXML)方法带有两个参数:第一个参数xmlSource表示需要被解析的文档,第二个参数isSuccessful表示文档装载是否成功。Save方法是用来把文档保存到一个指定的位置。Save方法有一个参数destination用来表示需要保存的对象的类型,对象可以是一个文件,一个ASPResponse方法,一个XML文档对象,或者是一个能够支持持久保存(persistence)的客户对象。
拓展资料:
XML文档因为有着比HTML严格的多的语法要求,所以使用和编写一个XML解析器要比编写一个HTML的解析器要容易得多。同时因为XML文档不仅可以标记文档的显示属性,更重要的是它标记了文档的结构和包含信息的特征,所以可以方便地通过XML解析器来获取特定节点的信息并加以显示或修改,方便了用户对XML文档的操作和维护。同时我们需要注意的是XML是一种开放的结构体系并不依赖于任何一家公司,所以开发基于XML的应用必然会得到绝大多数软件开发平台的支持。
参考资料:msxml_百度百科
msxml
指微软的xml语言解析器,用来解释xml语言的。就好像html文本下再到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。要使用xml文件就一定要用到xml parser。不过不仅仅微软有,像ibm,sun都有自己的xml parser。
MSXML 包含 SDK 软件开发套件,这是微软公司所释出的,安装过「神话世纪」的朋友就会知道,它已经被应用于最新的游戏。
那么,什么是 MSXML 呢?它的全名是:「Microsoft XML Core Services」,主要是用来执行或开发经由 XML 所设计的最新应用程序。
微软正式发布了其XML的核心服务组件---MSXML 4.0。和MSXML 3.0相比,MSXML 4.0提供了大量的新功能和功能改进。其中包括:对XML模式语言的支持,更快的分析器和XSLT引擎,对XML流更好的处理,更好的一致性支持。MSXML 4.0并不是MSXML 3.0的替代产品,因为在3.0中的一些过时功能已经在4.0中彻底去除了。所以4.0可以和3.0(甚至更早的版本)同时安装。
MSXML 4.0 Service Pack 2 (SP2)是MSXML 4.0和MSXML 4.0 Service Pack 1 (SP1)的完全取代版本。它提供了大量的安全和程序错误修复。
MSXML 4.0 SP2并不能取代MSXML 3.0,因为它已不再支持一些旧的以及不一致的功能。所以用户可能必须同时运行MSXML 4.0和MSXML 3.0或更前版本。
MSXML是微软的XML语言解析器,用来解释XML语言的。其中的具体情况如下:
1、MSXML主要用来执行或开发经由XML所设计的最新应用程序。就好像HTML文本下载到本地,浏览器会检查HTML的语法,解释HTML文本然后显示出来一样。
2、所以要使用XML文件就一定要用到XML PARSER。不过不仅仅微软有,像IBM、SUN都有自己的XML PARSER。
3、MSXML解析器允许你装载和创建一个文档,收集文档的错误信息,得到和操作文档中的所有的信息和结构,并把文档保存在一个XML文件中。
扩展资料
MSXML的解析说明
实际上,MSXML在XML文档解析过程中可以得到以下的信息:
1、doctype(文档类型):实际上是和用来定义文档格式的DTD文件。如果XML文档没有相关的DTD文档的话,它就返回NULL。
2、implementation(实现):表示该文档的实现,实际上就是用来指出当前文档所支持的XML的版本。
3、parseError(解析错误):在解析过程中最后所发生的错误。
4、readyState(状态信息):表示XML文档的状态信息,readyState对于异步使用微软的XML解析器来说的重要作用是提高了性能,当异步装载XML文档的时候,你的程序可能需要检查解析的状态,MSXML提供了四个状态,分别为正在状态,已经状态,正在解析和解析完成。
5、url(统一资源定位):关于正在被装载和解析的XML文档的URL的情况。注意如果该文档是在内存中建立的话,这个属性返回NULL值。
参考资料:百度百科-msxml
XML的XmlPullParser解析
xml文件的解析有三种方式:
以下使用XmlPullParser来进行解析。
xml可以用在内容判断的时候,比如多种显示 例如a客户需要123 b客户只需要23
xml的读取方式: 1.获取当前的xml 2.对当前的xml以文档的形式进行遍历
想要读取xml需要使用XmlPullParser
这里需要注意的是XmlResourceParser构建的xmlPullParser不再需要额外设置解码类型和xml。 可以直接获取。
存放在res下,存放的目录不同读取的情况也不同。
XmlResourceParser在得到xml内容后不需要再设置解码方式。 XmlResourceParser是继承了XmlPullParser的
一般情况在本地的xml读取会判断一下xml是否存在。
下面以存放在raw目录下,使用XmlPullParserFactory来进行读取的方法
首先是xml
知识点补充:
如果还存在不懂的地方可以联系一下作者,我会帮忙解答!
什么xml解析器是最好的
在程序里面没有最好的,只有最适合的,不同的情况要不同分析。要根据实际需要选择合适的工具才能事半功倍。
所以说没有最好的xml解析器,只有最适合的xml解析器。
pull
1)DOM(JAXP Crimson解析器)
DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。
)SAX
SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。
3)JDOM http://www.jdom.org
JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。正在考虑通过“Java规范请求JSR-102”将它最终用作“Java标准扩展”。从2000年初就已经开始了JDOM开发。
4)DOM4J http://dom4j.sourceforge.net
虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。从2000下半年开始,它就一直处于开发之中。
为支持所有这些功能,DOM4J使用接口和抽象基本类方法。DOM4J大量使用了API中的Collections类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然DOM4J付出了更复杂的API的代价,但是它提供了比JDOM大得多的灵活性。
在添加灵活性、XPath集成和对大文档处理的目标时,DOM4J的目标与JDOM是一样的:针对Java开发者的易用性和直观操作。它还致力于成为比JDOM更完整的解决方案,实现在本质上处理所有Java/XML问题的目标。在完成该目标时,它比JDOM更少强调防止不正确的应用程序行为。
DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用DOM4J.
比较
1)DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。
3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
目前在Java中几种常用的XML解析器的比较
目前常用的XML的解析器主要有:SAX,DOM,Xerces1、SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。另一方面,由于应用程序没有以任何方式存储数据,使用 SAX 来更改数据或在数据流中往后移是不可能的。2、DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。另一方面,在内存中构造这样的树涉及大量的开销。大型文件完全占用系统内存容量的情况并不鲜见。此外,创建一棵 DOM 树可能是一个缓慢的过程。3、选择 DOM 还是选择 SAX,这取决于下面几个因素: 应用程序的目的:如果打算对数据作出更改并将它输出为 XML,那么在大多数情况下,DOM 是适当的选择。并不是说使用 SAX 就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。 数据容量: 对于大型文件,SAX 是更好的选择。数据将如何使用:如果只有数据中的少量部分会被使用,那么使用 SAX 来将该部分数据提取到应用程序中可能更好。 另一方面,如果您知道自己以后会回头引用已处理过的大量信息,那么 SAX 也许不是恰当的选择。 对速度的需要:SAX 实现通常要比 DOM 实现更快。 SAX 和 DOM 不是相互排斥的,记住这点很重要。您可以使用 DOM 来创建 SAX 事件流,也可以使用 SAX 来创建 DOM 树。事实上,用于创建 DOM 树的大多数解析器实际上都使用 SAX 来完成这个任务!4、SAX,DOM是两种对XML文档进行分析的方法(没有具体的实现,只有接口),所以不是解释器,如果光有他们,你是完成不了对xml文档的处理的。SAX的包是org.xml.sax,DOM的包是org.w3c.dom,包的名称很重要,它有助于你理解他们之间的关系。5、jaxp是api,他封装了sax/dom两种接口。并在sax/dom的基础之上,作了一套比较简单的api以供开发人员使用。jaxp的包是javax.xml.parsers,可以看看jaxp的源文件,它的文件中包含了对sax或者dom的引用(import)jaxp也不是具体的实现,他只是一套api。如果你仅仅有jaxp那是无法工作的,(其实jaxp只是完成对sax、dom的包装,生成了DocumentBuilderFactory/DocumentBuilder和SAXParserFactory SAXParser。也就是设计模式中的工厂模式,他的好处就是具体的对象( 解释器)建立由子类完成)6、xerces解释器(号称地球上最快的xml解释器)在xerces中对jaxp中定义的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory进行了继承(extends)对应SAXParserImpl XParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl这就是为什么你的classpath中只要有xerces.jar(其中包含了sax dom jaxp )和 xercesImpl.jar就可以的原因了.
请问大佬有MSXML(微软xml解析器) V6.10.1129.0软件免费百度云资源吗
链接:
提取码:z5mw
软件名称:MSXML(微软xml解析器)V6.10.1129.0
语言:简体中文
大小:5.05MB
类别:系统工具
介绍:MSXML6.0SP1旨在为现有MSXML6.0、MSXML3和MSXML4提供升级途径。MSXML6.0SP1将把MSXML6.dll的版本升级到6.10.1129.0,即使计算机上未安装任何旧版本的MSXML6.0,仍可安装MSXML6.0SP1。
《MSXML》微软xml解析器百度网盘免费资源下载
链接: https://pan.baidu.com/s/1VN6OxesM4YoJnVl8PXvKaA
提取码:z5mw
msxml指微软的xml语言解析器,用来解释xml语言的。就好像html文本下载到本地,浏览器会检查html的语法,解释html文本然后显示出来一样。
java中dom4j解析xml文件怎么获取节点属性
java读取xml节点元素,主要使用java提供的解析xml的工具类SAXParserFactory,如下代码:package xml.xmlreader;import java.io.File;import java.net.URL;import java.util.Properties;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class CFGParser {//解析xml文件的工具类 private Properties props; public Properties getProps() { return props; } public void setProps(Properties props) { this.props = props; } public void parse(String filename) throws Exception { CFGHandler handler = new CFGHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); URL confURL = super.getClass().getClassLoader().getResource(filename); if (confURL == null) { System.out.println("Can't find configration file."); return; } try { parser.parse(confURL.toString(), handler); this.props = handler.getProps(); } finally { factory = null; parser = null; handler = null; } } public void parseFile(String filename) throws Exception { CFGHandler handler = new CFGHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); File f = new File(filename); if ((f == null) || (!f.exists())) return; try { parser.parse(f, handler); this.props = handler.getProps(); } finally { factory = null; parser = null; handler = null; } }}package xml.xmlreader;import java.util.Properties;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class CFGHandler extends DefaultHandler{ private Properties props; private String currentSet; private String currentName; private StringBuffer currentValue = new StringBuffer(); public CFGHandler() { this.props = new Properties(); } public Properties getProps() { return this.props; } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { this.currentValue.delete(0, this.currentValue.length()); this.currentName = qName; } public void characters(char[] ch, int start, int length) throws SAXException { this.currentValue.append(ch, start, length); } public void endElement(String uri, String localName, String qName) throws SAXException { this.props.put(qName.toLowerCase(), this.currentValue.toString().trim()); }}xml文件 6 10 23:00 12:00 18:00jsp获取各个节点的值:
C++中解析xml文件用什么方法
需要tinyXML,是c++专门使用XML的工具,网上有下载
xml4c
------http://www.alphaworks.ibm.com/tech/xml4c
IBM的XML Parser,用c++语言写就,功能超级强大。号称支持多达100种字符编码,能够支持中文,
适合于大规模的xml应用。若只是很小范围的应用,则非最佳选择,毕竟,你需要“背负”约12M左右的
dll的沉重负担
Xerces c++
-------http://xml.apache.org/xerces-c
Apache的XML项目,同样是c++ 实现,来源于IBM的xml4c,因此编程接口也是和xml4c一致的。但是
目前只支持少数的字符编码,如ASCII,UTF-8,UTF-16等,不能处理包含中文字符的XML文档。
Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定
义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML Schema
的基本完整的开放标准。
XMLBooster
-------http://www.xmlbooster.com/
这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序
来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。
PS: 我用的是 Xerces
C++ XML解析之TinyXML篇
最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。以后的文章里会讲解使用Xerces进行C++ XML解析的例子,希望大家一起交流。TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。首先从网上下载TinyXML的库,文件夹的名字是TinyXpath,在工程里做如下配置:在附加包含路径里添加:你的tinyxpath路径/tinyxpath/include在附加库路径里添加:你的tinyxpath路径/tinyxpath/lib在对象/库路径里添加:tinyxpathd.lib,如果使用release版本,则是tinyxpath.lib。另外,由于我开发的项目是多线程的,所以设置了多线程的环境,因此使用TinyXML没有出现问题。本人将TinyXML写在一个单独的C++工程进行测试,发现如果不设置多线程的环境,会出现链接错误。我觉得原因可能是TinyXML使用了多线程环境,因此需要设置多线程的环境。在工程/设置下的C/C++选项卡中,选择Code Generation,在Use run-time library中选择Debug MultiThreaed DLL即可。本例的XML文件Students.xml如下:Class name="计算机软件班"Studentsstudent name="张三" studentNo="13031001" sex="男" age="22"phone88208888/phoneaddress西安市太白南路二号/address/studentstudent name="李四" studentNo="13031002" sex="男" age="20"phone88206666/phoneaddress西安市光华路/address/student/Students/Class程序代码XmlParseExample.cpp如下所示:#include iostream#include string#include tinyxml.husing std::string;int main(){TiXmlDocument* myDocument = new TiXmlDocument();myDocument-LoadFile("Students.xml");TiXmlElement* rootElement = myDocument-RootElement(); //ClassTiXmlElement* studentsElement = rootElement-FirstChildElement(); //StudentsTiXmlElement* studentElement = studentsElement-FirstChildElement(); //Studentswhile ( studentElement ) {TiXmlAttribute* attributeOfStudent = studentElement-FirstAttribute(); //获得student的name属性while ( attributeOfStudent ) {std::cout 《 attributeOfStudent-Name() 《 " : " 《 attributeOfStudent-Value() 《 std::endl;attributeOfStudent = attributeOfStudent-Next();}TiXmlElement* phoneElement = studentElement-FirstChildElement();//获得student的phone元素std::cout 《 "phone" 《 " : " 《 phoneElement-GetText() 《 std::endl;TiXmlElement* addressElement = phoneElement-NextSiblingElement();std::cout 《 "address" 《 " : " 《 phoneElement-GetText() 《 std::endl;studentElement = studentElement-NextSiblingElement();}return 0;}程序运行结果如下:name : 张三studentNo : 13031001sex : 男age : 22phone : 88208888address : 88208888name : 李四studentNo : 13031002sex : 男age : 20phone : 88206666address : 88206666本例中使用的是对xml文件进行解析,很容易掌握,但是很多开发人员不知道如何对xml 字符流(非xml文件)进行解析,我看了TinyXML提供的源代码,里面可以使用如下方法对xml流解析。对应于上例,代码如下:string xmlString ="Class name=\"计算机软件班\""Studentsstudent name=\""张三\"" studentNo=\""13031001\"" sex=\""男\"" age=\""22\""phone88208888/phoneaddress西安市太白南路二号/address/studentstudent name=\""李四\"" studentNo=\""13031002\"" sex=\""男\"" age=\""20\""phone88206666/phoneaddress西安市光华路/address/student/Students/Class"";TiXmlDocument* myDocument = new TiXmlDocument();myDocument-Parse(xmlString.c_str());使用Parse函数就可以解析XML字符流了,这是很多开发者不太熟悉的情况。如果开发者开发特定应用,就可以使用上述类似方法,可能不需要完全处理每一个属性,比如可以对属性名进行判断,只处理自己需要的属性,或者自己需要的xml元素。还可以使用TinyXML的方法创建xml元素和xml属性,或者设置xml元素和属性对应的值,等等,如果读者想要类似的例子,可以留言写出。下面介绍TinyXML的一些类。在TinyXML中,根据XML的各种元素来定义了一些类:TiXmlBase:整个TinyXML模型的基类。TiXmlAttribute:对应于XML中的元素的属性。TiXmlNode:对应于DOM结构中的节点。TiXmlComment:对应于XML中的注释TiXmlDeclaration:对应于XML中的申明部分,?versiong=""1.0"" ?。TiXmlDocument:对应于XML的整个文档。TiXmlElement:对应于XML的元素。TiXmlText:对应于XML的文字部分TiXmlUnknown:对应于XML的未知部分。TiXmlHandler:定义了针对XML的一些操作。"
如何利用Perl解析XML文件
榭梢匝≡瘢?恳桓龆贾С终?蟇eb服务的不同方面。此外,Perl的核心库包括多个支持XML的模块。
利用Perl解析XML文件
当在Perl中使用XML时,你会有将近五百个CPAN模块可以选择,每一个都支持整合Web服务的不同方面。此外,Perl的核心库包括多个支持XML的模块。这篇文章就关注于一个最早期且涉及最频繁的核心模块:XML::Parser.
XML::解析器系列
最初的Perl解析器XML::Parser::Expat由LarryWall在几年前编写并由ClarkCooper保持延续。模块作为ExpatXMLparser的界面由JamesClark用C语言编写且已经被一些脚本语言所采用。
Perl解析XML文件中Expat是一个以事件为基础的解析器,意味着特定条件触发处理功能。例如,一个开始或结尾标记将触发适当的用户定义子程序。XML::Parser模块在Expat功能的基础上为普通应用所建构。
注意Expat在解析之前不会使XML生效且在遇到错误出现时会失效。这些限制会使XML::Parser模块速度非常之快。
XML::Parser简介
任何人都可以在Perl中编写一个XML解析器。毕竟你只是处理具有已知格式的文本。但由于XML::Parser模块是用C编写的,他比任何你可以实现的纯Perl应用要更有效的多。而且既然他已经被编写出来,你就可以把时间花在其他更有用的事情上。
XML::Parser的Expat的功能允许你定义所使用的解析器的样式。最普遍使用的样式是Tree和Stream,Tree处理XML的输入,创建含有文件中的元素和数据的成套数组,这样你就可以按照你的意愿控制这个结构。Stream将分析行为划分层级,在一个事件的开始做处理,要使用Stream,你必须在你对模块做例示并将其与描述事件出现时如何处理的子程序相关联时定义处理器。
其它样式还包括:Sub,允许你特定地对一种XML标记定义其功能。Debug,将文件显示未标准输出。Object,与Tree相似但是返回对象。小结
使用Java自带SAX工具解析XML
studentInfo xml
崔卫兵
PC学院
男 年生 硕士 现就读于北京邮电大学
cwb
PC学院
<!-- 如果没有leader属性 默 认的为leader >
男 年生 硕士 现就读于中国农业大学
xxxxx
xxx学院
注视中 注释中
SAXHandler java
package saxExample;
import java util HashMap;import xml sax *;import xml sax helpers DefaultHandler;
/** * 继承DefaultHandler类 用SAX实现对xml的遍历 * @author cuiweibing * @since */
public class SAXHandler extends DefaultHandler { //存放所有的节点(这里的节点等于原来的节点+编号)以及它所对应的值 private HashMap
hashMap = new HashMap
(); //目前的节点 private String currentElement = null; //目前节点所对应的值 private String currentValue = null; //用于节点编号(具体到person) private static int i= ; public HashMap getHashMap() { return hashMap; } public void characters(char[] ch int start int length) throws SAXException { //取出目前节点对应的值 currentValue = new String(ch start length); } public void startElement(String uri String localName String qName Attributes attr) throws SAXException { if(qName equalsIgnoreCase( student )){ //currentElement= ; }else if (qName equalsIgnoreCase( person )){ i++; //currentElement= ; String age=attr getValue( age ); if(age!=null){ hashMap put(qName+ age +i age); }else{ hashMap put(qName+ age +i ); } }else if (qName equalsIgnoreCase( college )){ currentElement= qName; String leader=attr getValue( leader ); if(leader!=null){ hashMap put(qName+ leader +i leader); }else{ hashMap put(qName+ leader +i leader ); } }else{ currentElement= qName; } } public void endElement(String uri String localName String qName) throws SAXException { if (qName equalsIgnoreCase( student )){// hashMap put(currentElement currentValue); }else if (qName equalsIgnoreCase( person )){ }else{ currentElement+=i; hashMap put(currentElement currentValue); } }}
TestSAXHandler java
package saxExample;
import java io File;import java util HashMap;import javax xml parsers SAXParserFactory;import javax xml parsers SAXParser;
/** * 解析主类 * @author cuiweibing * @since */
public class TestSAXHandler { public TestSAXHandler() { }
public static void main(String[] args) { try{ //初始化与解析 SAXHandler handler = new SAXHandler(); SAXParserFactory saxparserfactory = SAXParserFactory newInstance(); SAXParser saxparser = saxparserfactory newSAXParser(); saxparser parse(new File( studentInfo xml ) handler);
//解析完后获取解析信息 HashMap hashMap = handler getHashMap(); System out println( 姓名\t年龄\t学院\t学院领导\t电话\t\t备注 ); for(int i= ;i
<hashmap size();i+="){" int j="i/" ; system out print(hashmap get( name +j)+ \t ); person age college leader telephone println(hashmap notes } }catch(exception ex){ ex printstacktrace(); }}
lishixinzhi/Article/program/Java/JSP/201311/19670