<?php
#php操作xml,SimpleXMLElement类小结
header('Content-type:text/html;charset=utf-8;');
//1.构造函数
/*
$xmlstring=<<<XML
<?xml version="1.0" encoding="utf-8"?>
<note xmlns:b="http://www.w3school.com.cn/example/">>
<to>虎哥</to>
<from>John</from>
<heading>Reminder</heading>
<body>Dont forget the meeting!</body>
</note>
XML;
*/
$xmlstring=<<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<note xmlns:b="http://www.w3school.com.cn/example/">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<b:body>Dont forget the meeting!</b:body>
</note>
XML;
$xml=new SimpleXMLElement($xmlstring);//实例化类
// $xml=simplexml_load_file('test.xml');//通过文件加载来实例化类
// $xml=simplexml_load_string(data):通过XML字符串载入对象。
echo $xml->to;//访问属性
echo '<br>';
//添加属性
//addAtribute(name,value,ns):函数给SimpleXML元素添加一个属性
//name,规定属性名
//value,规定属性值
//ns,规定属性的命名空间
#$xml->body->addAttribute('sex','男');
echo '<br>';
/*访问属性
foreach ($xml->body[0]->attributes() as $key=>$val) {
echo "$key=$val";
echo '<br>';
}
*/
//添加一个子节点
//addChild(name,value,ns):先xml添加一个子节点
#$xml->body->addChild('date','2014-08-01');
/*访问子节点
foreach ($xml->body->children() as $child) {
echo "Child node: " . $child;
}
echo '<br>';
*/
// asXml(file):函数以字符串的形式从SimpleXMLElement对象返回XML文档
//file:可选,如果规定了这个参数将直接写入指定的文档
// 失败,返回false
echo $xml->asXML();
echo '<br>';
// attributes():函数获取SimpleXML元素的属性
//children():函数获取指定节点的子节点
// getDocNamespace():函数从SimpleXMLElement对象返回
// 在XML文档中声明的命名空间
print_r($xml->getDocNamespaces());
echo '<br>';
// getName():函数从SimpleXMLElement对象获取XML元素的名称,
// 如果成功,该函数返回XML元素的名称,如果失败,则返回false
echo $xml->getName();
echo '<br>';
// getNamespace:函数获取在XML文档中使用的命名空间
//registerXPathNamespace(prefix,ns):函数为下一次XPath查询创建命名空间语境
// prefix:必须,规定命名空间的前缀
// ns:必须,规定命名空间URL,必须匹配XML文档中的命名空间,eg.
$xml->registerXPathNamespace('msg','http://www.w3school.com.cn/example/');
$result=$xml->xpath('msg:body');
print_r($result);
echo '<br>';
// xpath(path):函数运行对XML文档的Xpath查询,如果成功则返回一个SimpleXMLElement对象的一个数组。
// 如果失败,则返回false。
//simplexml_import_dom(node):函数把Dom节点转换为SimpleXMLElement对象,如果失败返回false。
$dom = new domDocument();
$dom->loadXML('<note><from>John</from></note>');
$xml = simplexml_import_dom($dom);
echo $xml->from;
?>