设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 603|回复: 2

[教程] PHP中的SimpleXML函数库(SimpleXML functions) [复制链接]

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
2836
精华
2
声望
12984 点
金币
2999 Mold
被赞许
28 次
注册时间
2006-4-28

Mod中国同盟社至高荣誉

发表于 2011-7-15 11:07:55 |显示全部楼层
SimpleXMLElement->addAttribute() — 在节点中添加属性
SimpleXMLElement->addChild() — 在SimpleXMLElement对象中添加一个节点
SimpleXMLElement->asXML() — 一个SimpleXMLElement对象转换成一个XML
SimpleXMLElement->attributes() — 获取指定节点的属性
SimpleXMLElement->children() — 获取SimpleXMLElement的子对象
SimpleXMLElement->__construct() — 建立一个SimpleXMLElement对象
SimpleXMLElement->getDocNamespaces() — 获取XML中定义的命名空间
SimpleXMLElement->getName() — 获取XML对象的名称
SimpleXMLElement->getNamespaces() — 获取XML中使用了的命名空间
SimpleXMLElement->registerXPathNamespace() — 注册一个供xpath()方法使用的命名空间
SimpleXMLElement->xpath() — 使用xpath的语法来解析一个SimpleXMLElement对象
simplexml_import_dom — 将一个dom(php内置的DOM Functions)对象转换为一个SimpleXMLElement
simplexml_load_file — 载入一个xml文件并解析为SimpleXMLElement对象
simplexml_load_string — 载入一个字符串并解析为SimpleXMLElement对象


首先建立一个测试用的XML文件test.xml:
  1. <?xml version='1.0' ?>
  2. <b:bookshop xmlns:b="http://www.modchina.com/">
  3. <b:book langusge="english" store="10">
  4. <b:name>book name</b:name>
  5. <b:author>tom</b:author>
  6. <b:content>
  7. <b:page>200</b:page>
  8. <b:character>105000</b:character>
  9. </b:content>
  10. </b:book>
  11. <b:book>
  12. <b:name>another book name</b:name>
  13. <b:author>jerry</b:author>
  14. <b:content>
  15. <b:page>300</b:page>
  16. <b:character>165000</b:character>
  17. </b:content>
  18. </b:book>
  19. </b:bookshop>
复制代码
__construct()方法的作用是建立一个SimpleXMLElement对象,该方法有5个参数,

第一个参数表示字符串形式的XML,第 二个参数表示一些设置Libxml的参数,第三个参数设置为true的时

候说明第一个参数是URL地址,第四个参数表示命名空间,第五个参数不详。
  1. <?php
  2. $xml = new SimpleXMLElement(file_get_contents('test.xml'), null, null,

  3. 'http://www.modchina.com/');
  4. print_r($xml);
  5. ?>
复制代码
simplexml_load_file()函数的作用是载入一个xml文件并解析为SimpleXMLElement对 象,

simplexml_load_file()函数有五个参数,第一个参数表示载入文件的路径,第二个参数表示将解析的结

果扩展到某个指定的 SimpleXMLElement对象中,第三个参数表示一些设置Libxml的参数,第四个参数是

载入的命名空间,第五个参数没有测试成功。
  1. <?php
  2. $xml = simplexml_load_file('test.xml', null, null, 'http://www.modchina.com/');
  3. echo $xml->book->name;
  4. // 显示 book name
  5. ?>
复制代码
simplexml_load_string()函数的参数和作用和simplexml_load_file()函数类似,区别是

simplexml_load_string()函数载入的是一个文件流。
  1. <?php
  2. $file_string = file_get_contents('test.xml');
  3. $xml = simplexml_load_string($file_string, null, null, 'http://www.modchina.com/');
  4. echo $xml->book->name;
  5. // 显示 book name
  6. ?>
复制代码
simplexml_import_dom()函数的作用是将一个dom(php内置的DOM Functions)对象转换为一个

SimpleXMLElement,simplexml_import_dom()函数有两个参数,第一个参数表示的 是DOM对象,第二个参

数表示将解析的结果扩展到某个指定的SimpleXMLElement对象中。
  1. $dom = new DOMDocument;
  2. $dom->loadXML('<book><content><page>150</page></content></book>');
  3. $xml = simplexml_import_dom($dom);
  4. echo $xml->content->page;
  5. // 显示 150
复制代码
getNamespaces()方法的作用是获取XML中使用了的命名空间,getDocNamespaces()方

法的作用是获取XML中定义的 命名空间。两个函数都有一个参数,设置为true的时候,会递归的获取整个

文档中出现的namespace,否则只获取根节点的namespace。
  1. <?php
  2. $xml = <<<XML
  3. <?xml version="1.0" standalone="yes"?>
  4. <people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
  5. <p:person t:id="1">John Doe</p:person>
  6. <p:person t:id="2" xmlns:a="http://example.org/addr">
  7. Susie Q. Public
  8. </p:person>
  9. </people>
  10. XML;

  11. $sxe = new SimpleXMLElement($xml);
  12. print_r($sxe->getNamespaces(true));
  13. print_r($sxe->getDocNamespaces(true));
  14. /**
  15. * Array
  16. * (
  17. *     [p] => http://example.org/ns
  18. *     [t] => http://example.org/test
  19. * )
  20. * Array
  21. * (
  22. *     [p] => http://example.org/ns
  23. *     [t] => http://example.org/test
  24. *     [a] => http://example.org/addr
  25. * )
  26. */
  27. ?>
复制代码
getName()方法的作用是获取XML对象的名称。
  1. <?php
  2. $xml = simplexml_load_file('test.xml', null, null, 'http://www.modchina.com/');
  3. print_r($xml->getName());
  4. // 显示 bookshop
  5. ?>
复制代码
children()方法的作用是获取SimpleXMLElement的子对象。
  1. <?php
  2. $ns = 'http://www.modchina.com/';
  3. $xml = simplexml_load_file('test.xml', null, null, $ns);
  4. echo $xml->children($ns)->children($ns)->name;
  5. // 显示 book name
  6. ?>
复制代码
attributes()方法的作用是获取指定节点的属性。
  1. <?php
  2. $xml = simplexml_load_file('test.xml', null, null, 'http://www.modchina.com/');
  3. foreach($xml->book->attributes() as $key=>$value)
  4. {
  5. echo $key . '=>' . $value."\n";
  6. }
  7. // 显示
  8. // langusge=>english
  9. // store=>10
  10. ?>
复制代码
asXML()方法的作用是将一个SimpleXMLElement对象转换成一个XML,asXML()方法有一个表示文

件地址的可选参数,会将XML直接写入这个文件,而不是返回。

addChild()方法的作用是在SimpleXMLElement对象中添加一个节点。addChild()方法有三个参数,第一个

参数表示节 点的名称,第二个参数表示节点的值,第三个参数表示命名空间。addAttribute()方法的作

用是在节点中添加属性,第一个参数表示属性的名称,第 二个参数表示属性的值,第三个参数表示命名

空间。
  1. <?php
  2. $xml = simplexml_load_file('test.xml', null, null, 'http://www.modchina.com/');
  3. $xml->book->addChild('time', '20080503');
  4. $xml->book->addAttribute('amount', '$63');
  5. print_r($xml->asXML());
  6. /**
  7. * <?xml version="1.0"?>
  8. * <b:bookshop xmlns:b="http://www.modchina.com/">
  9. *     <b:book langusge="english" store="10" amount="$63">
  10. *         <b:name>book name</b:name>
  11. *         <b:author>tom</b:author>
  12. *         <b:content>
  13. *             <b:page>200</b:page>
  14. *             <b:character>105000</b:character>
  15. *
  16. *         </b:content>
  17. *     <b:time>20080503</b:time></b:book>
  18. *     <b:book>
  19. *         <b:name>another book name</b:name>
  20. *         <b:author>jerry</b:author>
  21. *         <b:content>
  22. *             <b:page>300</b:page>
  23. *
  24. *             <b:character>165000</b:character>
  25. *         </b:content>
  26. *     </b:book>
  27. * </b:bookshop>
  28. *
  29. */
  30. ?>
复制代码
xpath()方法的使用是使用xpath的语法来解析一个SimpleXMLElement对象,xpath()有一个参数

,表示一个xpath 语法的字符串,registerXPathNamespace()方法的作用是注册一个供xpath()方法使用

的命名空 间,registerXPathNamespace()方法有两个参数,第一个表示名称,第二个表示的是值。
  1. <?php
  2. $xml = simplexml_load_file('test.xml', null, null, 'http://www.modchina.com/');
  3. $xml->registerXPathNamespace('anotherb', 'http://www.modchina.com/');
  4. $result = $xml->xpath('//anotherb:page');
  5. print_r($result);
  6. /**
  7. * Array
  8. * (
  9. *     [0] => SimpleXMLElement Object
  10. *         (
  11. *             [0] => 200
  12. *         )
  13. *
  14. *     [1] => SimpleXMLElement Object
  15. *         (
  16. *             [0] => 300
  17. *         )
  18. *
  19. * )
  20. */
  21. ?>
复制代码

使用道具 举报

Rank: 1

帖子
48
精华
0
声望
30 点
金币
-3 Mold
被赞许
0 次
注册时间
2011-6-30
发表于 2011-7-18 09:24:40 |显示全部楼层
__construct()方法的作用是建立一个SimpleXMLElement对象,该方法有5个参数,

第一个参数表示字符串形式的XML,第 二个参数表示一些设置Libxml的参数,第三个参数设置为true的时
科士威产品怎么样    http://www.tetway.com/?leiyuan

使用道具 举报

头像被屏蔽

禁止发言

帖子
74
精华
0
声望
48 点
金币
-28 Mold
被赞许
-4 次
注册时间
2011-8-26
发表于 2011-8-28 16:53:48 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部