DOM解析XMl
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
?>
SAX解析:
function xstart($parser,$name,$attr){
if(strcasecmp($name,"news")==0){
echo ("<body>");
}else if(strcasecmp($name,"title")==0){
echo ("<h1>");
}else if(strcasecmp($name,"content")==0){
echo ("<p><em>");
}else{
echo ("<$name>");
}
}
function xend($parser,$name){
if(strcasecmp($name,"news")==0){
echo ("</body>");
}else if(strcasecmp($name,"title")==0){
echo ("</h1>");
}else if(strcasecmp($name,"content")==0){
echo ("</em></p>");
}else{
echo ("</$name>");
}
}
function data($parser,$data){
echo $data;
}
$parser = xml_parser_create();
xml_set_element_handler($parser,"xstart","xend");
xml_set_character_data_handler($parser,"data");
$file = "news.xml";
if(!($fp = fopen($file,"r")))
die("I/o error");
while($data = fread($fp,4096)){
if(!xml_parse($parser,$data,feof($fp)))
die("xml error");
}
对比:使用SAX的优势在于其解析速度较快,相对于DOM而言占用内存较少
如何在 SAX 和 DOM 之间选择
选择 DOM 还是选择 SAX,这取决于下面几个因素:
1.应用程序的目的:如果打算对数据作出更改并将它输出为 XML,那么在大多数情况下,DOM 是适当的选择。并不是说使用 SAX 就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。
2.数据容量: 对于大型文件,SAX 是更好的选择。
数据将如何使用:如果只有数据中的少量部分会被使用,那么使用 SAX 来将该部分数据提取到应用程序中可能更好。 另一方面,如果您知道自己以后会回头引用已处理过的大量信息,那么 SAX 也许不是恰当的选择。
3.对速度的需要: SAX 实现通常要比 DOM 实现更快。
SAX 和 DOM 不是相互排斥的,记住这点很重要。您可以使用 DOM 来创建 SAX 事件流,也可以使用 SAX 来创建 DOM 树。事实上,用于创建 DOM 树的大多数解析器实际上都使用 SAX 来完成这个任务!
分享到:
相关推荐
SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式处理XML文档,相较于DOM(Document Object Model)解析器,SAX解析更加轻量级和高效。 SAX解析的核心思想是读取XML文档时,每当遇到一个元素、...
XML解析库在各种编程语言中广泛存在,例如JavaScript的DOMParser,Python的xml.etree.ElementTree,以及Java的DOM和SAX解析器。 在实际应用中,这些技术常常结合使用。比如,用户可能上传一个XML文件,服务器接收到...
这个XML解析类对于处理简单的XML文档来说可能非常实用,但如果你需要处理复杂的XML结构或者性能要求较高,你可能需要考虑使用DOMDocument或SAX解析器,它们提供了更强大的功能和更高的效率。例如,DOMDocument可以...
本文讨论了PHP中对XML解析的支持,分析了PHP的XML解析器Expat的工作过程,同时提出直接利用扩展DOM类来完成XML文档操作。文中的实例结果也表现了PHP对XML应用支持的灵活性。 PHP5中XML解析的应用改进的优点有: ...
标题提到的“PHP读取和编写XMLDOM”是指...DOM库适合读写XML,SAX解析器适合处理大文件,而正则表达式则在特定情况下作为辅助手段。了解XML的基础知识和PHP的相关API,能够有效地在PHP应用程序中管理和操作XML数据。
在PHP中,有多种方法来处理XML,包括使用DOM库、SAX解析器和正则表达式。DOM(Document Object Model)库是其中最常用的一种,它将整个XML文档加载到内存中,形成一棵节点树,便于遍历和操作。 例如,要读取清单1中...
在实际应用中,我们可能需要结合SFTP下载和XML解析来实现特定功能,比如监控服务器上的日志文件,定时下载并解析以获取关键信息。这通常涉及到错误处理、数据清洗、转换和存储等步骤。例如,我们可以用Python的`...
在PHP开发中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。处理XML文档时,有两种主要的解析方法:DOM...在实际开发中,可以根据需求定制回调函数,实现对XML数据的深度处理和解析。
在这个主题中,“xmldom解析”主要涉及在服务器端和客户端使用DOM解析XML数据的技术。 1. **DOM解析原理**: - DOM解析器将XML文档转化为内存中的树形结构,称为DOM树。每个节点代表XML文档的一部分,如元素、属性...
PHP DOM(Document Object Model)是PHP中一个强大的工具,它允许开发者以树形结构解析XML文档,并能方便地对其进行修改、创建或查询。在处理大量XML数据时,DOM可以帮助我们高效地提取信息、执行计算或实现动态数据...
以上代码展示了如何使用Java实现DOM和SAX解析XML文件。在实际应用中,可能还需要根据需求处理各种异常和边缘情况。同时,除了Java,许多其他编程语言如Python、C#、PHP等也提供了DOM和SAX解析库,原理和用法类似。 ...
在Java中,我们通常使用DOM(Document Object Model)解析器或SAX(Simple API for XML)解析器来读取XML文件。DOM解析器将整个XML文件加载到内存中,形成一个树形结构,便于访问任何部分。例如,使用JDOM库读取XML...
首先,PHP提供了几个内置的XML处理函数和类库,如DOMDocument、SimpleXMLElement、SAX解析器等。其中,DOMDocument是基于W3C的DOM(文档对象模型)标准,适用于处理大型XML文档,因为它可以将整个XML文件加载到内存...
许多应用程序使用XML作为配置文件格式,PHP可以轻松读写这些文件,通过DOM或SimpleXML实现。 9. **XML Schema和DTD(Document Type Definition)**: XML Schema和DTD用于定义XML文档的结构和约束,PHP可以通过...
除了SAX和DOM之外,还有其他几种XML解析方法,包括StAX(Streaming API for XML)和Pull解析器,这些方法结合了SAX和DOM的优点,提供了一种更高效且功能全面的XML处理方式。 - **StAX**:结合了SAX的流式处理特性和...
PHP的XML扩展库提供了处理XML文档的功能,如DOMDocument类用于构建和操作DOM树,SimpleXML用于简化XML数据的读取和写入,SAX解析器用于处理大型XML文件以节省内存,以及XMLReader和XMLWriter等工具,使得PHP能轻松地...
- DOM(Document Object Model):PHP提供了DOM扩展,可以解析XML文档并创建DOM对象树,允许开发者通过节点操作对XML进行读写。例如,使用`DOMDocument`类加载XML文件,`getElementsByTagName`查找特定元素,`...
PHP脚本语言的XML应用...PHP脚本语言的XML应用支持是指PHP语言对XML文档的解析、处理和应用,包括基于SAX和DOM的XML解析器、SimpleXML、SOAP扩展和XSLT引擎等。这种支持使得PHP语言在实际应用中具有广泛的应用前景。
6. **SAX解析**: Simple API for XML (SAX) 是一种事件驱动的解析器,适用于处理大型XML文件。PHP提供了一个SAX解析器接口,但不直接实现,需要第三方库如PHP-XMLReader来实现。 7. **PHP与XML的序列化和反序列化**...