易截截图软件、单文件、免安装、纯绿色、仅160KB

php下哪种方法合适解析xml,转换成json格式

解析xml文档的类库有很多种,比较常用的就是SimpleXML,DOM Document,XMLReader,基于SAX的xml_parse函数。
根据xml文档结构,以及需求的不同,要选择好对应的类库。
解析小的文档的话,使用SimpleXML比较合适,简单的几个函数就可以搞定。
如果文档非常巨大,最好是XMLReader打开,中间转换成DOM来解析,感觉DOM与XPath结合的比较好。
以上是解析已知文档结构的XML,比如知道使用了什么命名空间,有哪些主要的节点等等信息的XML文档。
如果是要解析任意的XML文档,还是SAX的xml_parse比较合适,自己定义三个handler函数。
比如笔者就是用xml_parse来解析任意的xml文档,生成json格式的字符串。
下面把使用xml_parse来解析xml文档的所需要的三个handler讲解一遍。
首先是三个变量
$depth是指xml文档结构的层数,第一层的值是0。
$json_array是一个多位数组,每一个元素的成员是一个json数组,直接可以用json_encode函数。
这个数组的第一维的index是上面的$depth,解析完每一层的xml结构后,都将其结果"粘贴"到其父节点的最后一个字节点后边。
解析完成后$json_array[0]就是所有的xml文档内容都在里面啦。
$tag_name_stack也是一个数组,后进先出的数组,正在处理的标签名就存在这里面,处理完一个标签后,就将其请出数组。
private $depth = -1;
private $json_array = array();
private $tag_name_stack = array();
private function start_handler($parser, $name, $attrs) {
$arrts_array = array();
foreach ($attrs as $attr_name => $attr_value) {
$attr_name = str_replace(":", "$", $attr_name);
$arrts_array[$attr_name]=$attr_value;
}
$tag_name = str_replace(":", "$", $name);
$this->tag_name_stack[] = $tag_name;
$this->depth++;
//if (count($arrts_array) != 0) {
$this->json_array[$this->depth][$tag_name] = $arrts_array;<br>
首先是把该标签的属性都装入一个数组
foreach ($attrs as $attr_name => $attr_value) {
      $attr_name = str_replace(":", "$", $attr_nam


相关文档:

Perl解析XML文件时的字符集编码问题

http://stackoverflow.com/questions/1112828/cannot-decode-string-with-wide-characters-appears-on-a-weird-place
http://man.ddvip.com/web/xmlzhzn/xml_cn/xml_encoding.asp.htm
http://bbs.xml.org.cn/dispbbs.asp?boardID=8&ID=7226
http://topic.csdn.net/t/20030909/13/2240153.html
#
http://www.ezloo. ......

使用 XStream 在 JavaBean 与 XML/JSON 之间相互转换

XML 和 JSON 是当今常用的两种数据描述与传输的格式,特别是涉及到 JS 时使用 JSON 颇为频繁。自然,在 Java  的世界里少不了完成 JavaBean 与这两种格式相互转换的组件,那就是 XStream 和 JSON-lib。这里我简单记下 XStream  的用法。
其实相类似的工具早已有之。如果用过 DWR 的同志,一定有印像,DWR 进行远 ......

Spring XML配置的12个技巧

 
1 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一 ......

C# Xml中映射为类数据结构(报文)

        [System.Runtime.Serialization.DataMemberAttribute()]
        public Information Archive {
            get {
         &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号