PHP解析XML 元素结构范例

  该范例用缩进格式显示一个文档中起始元素的结构。

  显示 XML 元素结构

<?php
$file = "data.xml";
$depth = array();

function startElement($parser, $name, $attrs) {
   global $depth;
   for ($i = 0; $i < $depth[$parser]; $i++) {
       print "  ";
   }
   print "$name\n";
   $depth[$parser]++;
}

function endElement($parser, $name) {
   global $depth;
   $depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
   die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
   if (!xml_parse($xml_parser, $data, feof($fp))) {
       die(sprintf("XML error: %s at line %d",
                   xml_error_string(xml_get_error_code($xml_parser)),
                   xml_get_current_line_number($xml_parser)));
   }
}
xml_parser_free($xml_parser);
?> 

时间: 2024-08-03 08:31:32

PHP解析XML 元素结构范例的相关文章

Qt之解析XML元素(QXmlStreamReader)

简述 对于 XML 的内容,通常情况下,我们只关心 XML 元素的解析.这时,可以通过 QXmlStreamReader 中的便利函数 readNextStartElement() 来实现. 简述 详细介绍 使用 更多参考 详细介绍 之前使用的方式主要使用 readNext() 来读取下一个标记,并返回对应的类型. QXmlStreamReader xml; ... while (!xml.atEnd()) { xml.readNext(); ... // 做处理 } if (xml.hasEr

从XML元素结构到JAVA实现

xml 前几个月,做项目时整理过一些XML操作的程序.这里根据自己的编程习惯再做一下整理.XML操作最基本的是SAX,DOM了.但这里不是谈SAX,DOM怎么使用.而是从XML元素的角度谈其java的实现.XML是由多个元素组成,可以分成XMLElement.XMLSimpleElement.XMLComplexElement.XMLCollection.XMLCollectionElement等几种基本类型,从类名你基本就可以判断出该类所描述的XML对象了. 下面以一个例子来做描述: <?xm

Qt之解析XML(QXmlStreamReader)

简述 QXmlStreamReader 类提供了一个快速解析器,用于通过简单的流 API 读取格式良好的 XML.与之相对应的是 QXmlStreamWriter(写入 XML). 相比较 Qt 自己的 SAX 解析器(见 QXmlSimpleReader),QXmlStreamReader 更快,更方便.某些情况下,在使用 DOM 树(见 QDomDocument)的应用程序中,它也可能是一个更快,更方便的替代方案. QXmlStreamReader 可以从 QIODevice(见 setDe

Python解析xml中dom元素的方法_python

本文实例讲述了Python解析xml中dom元素的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: from xml.dom import minidom try:     xmlfile = open("path.xml", "a+")     #xmldoc = minidom.parse( sys.argv[1])     xmldoc = minidom.parse(xmlfile) except :     #updatelogger.

java-求助SAX解析XML时为什么不加上stack.pop()无法打印出元素文本内容?

问题描述 求助SAX解析XML时为什么不加上stack.pop()无法打印出元素文本内容? package com.shengsiyuan.xml.sax; import java.io.File; import java.util.Stack; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.s

xml+dom4j+数据库-初学xml,用dom4j怎么解析xml的混合类型元素?

问题描述 初学xml,用dom4j怎么解析xml的混合类型元素? 我是一个在校学生,刚刚接触xml,通过学习知道怎么用dom4j解析解析简单的xml文件,但是遇到混合元素的话就不太懂,有以下问题希望各位大神帮忙: 1.混合元素中的子元素可以出现多次,如何解析这个出现多次的元素,并把内容存入数据库?如:name的dtd定义和xml文档片段如下,怎么解析两个first,我只能解析出一个: <!ELEMENT name (first+, middle?, last)> <!ELEMENT fi

编码-c# 解析XML并讲每个元素转为类

问题描述 c# 解析XML并讲每个元素转为类 目前公司需要开发一个内部使用的自动化测试框架,老大希望用XML作为前端脚本,后端用c#处理. 前端样式如下: <?xml version="1.0" encoding="ISO-8859-1"?> <a:table xmlns:a="http://www.w3.org/a" xmlns:b="http://www.w3.org/b"> <a:tr>

java中用dom解析xml的经典入门级文档

dom|xml 一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM.Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器.JAXP接口包含了三个包:(1)org.w3c.dom W3C推荐的用于XML标准规划文档对象模型

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty