PHP操控XML (1)

XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument。本节主要介绍simpleXML

1.1创建SimpleXML对象

 

   1.1.1. simplexml_load_string

  1.1.2. simplexml_load_file

  1.1.3. simplexml_import_dom

  1.1.4. new SimpleXMLElement($data);

1.2. 元素操作

1.1.1. 输出节点值

1.1.2. 修改节点值

1.1.3. 输出属性值

1.1.4. 修改节点属性值

1.1.5. 添加属性

1.1.6. 删除属性

1.1.7. 获取某个节点是所有属性

1.1.8. 添加子节点

1.1.9. 删除节点

1.1.10. 获取子节点的数量

1.1.11. 遍历子节点对象

1.1.12. 基于 XML数据路径的查询 

1.1. 创建SimpleXML对象

$data = <<<”XML”

<?xml version=’1.0′ encoding=’utf-8’?>//这一行可以不要,会自动创建

<departs>

<depart>

    <name>name1</name>

    <employees>

        <employee>

            <serial_no attr=’xxxx’ sex=’nan’>100001</serial_no>

            <name>Simon</name>

        </employee>

        <employee>

            <serial_no>100002</serial_no>

            <name>Elaine</name>

        </employee>

    </employees>

</depart>

<depart>

    <name>name2</name>

    <employees>

        <employee>

            <serial_no>110001</serial_no>

            <name>yuxiaotao</name>

        </employee>

    </employees>

</depart>

</departs>

XML;

$xml = simplexml_load_string($data); //创建 SimpleXML对象

echo “<pre>”;

print_r($xml); //输出 XML

$xml->depart[0]->employees->employee[0]->name;

1.1.1. simplexml_load_string

1.1.2. simplexml_load_file

$xml = simplexml_load_file(‘test.xml’);

只是把xml文件放在文件里面;比如有的时候我们会把xml文件缓存在memcache里面

1.1.3. simplexml_import_dom

$dom = new DOMDocument;

$dom->loadXML(‘<books><book><title>blah</title></book></books>’);

if (!$dom) {

echo ’Error while parsing the document’;

exit;

}

$s = simplexml_import_dom($dom);

echo $s->book[0]->title;

1.1.4. new SimpleXMLElement($data);

1.2. 元素操作

1.2.1. 输出节点值

Eg:输出:100001

Echo $xml->depart[0]->employees->employee[0]->serial_no;

1.2.2. 修改节点值

$xml->depart[0]->employees->employee[0]->serial_no=123

1.2.3. 输出属性值

Eg:输出xxxx

Echo $xml->depart[0]->employees->employee[0]->serial_no['attr'];

1.2.4. 修改节点属性值

$xml->depart[0]->employees->employee[0]->serial_no['attr']=11111;

1.2.5. 添加属性

$xml->depart[0]->employees->employee[0]->serial_no->addAttribute(‘name’,'yuyi’);

1.2.6. 删除属性

unset($xml->depart[0]->employees->employee->serial_no['attr']);

1.2.7. 获取某个节点是所有属性

$a=$xml->depart[0]->employees->employee[0]->serial_no->attributes();

echo ”<pre>”;print_r($a);

输出结果:

图片4

注意:

$a=$xml->depart[0]->employees->employee[0]->name->attributes();

echo ”<pre>”;print_r($a);

输出结果:

图片5

1.2.8. 添加子节点

注意:只能够给没有值的节点添加子节点

$xml->depart[0]->employees->employee[0]->addChild(‘names’,'yuyi’);

输出结构:

图片1

 

1.2.9. 删除节点

unset($xml->depart[0]->employees->employee[0]->names);

 

1.2.10. 获取子节点的数量

$xml->count();

 

注意:这里只是子节点,不包括孙子节点

1.2.11. 遍历子节点对象

$xml = simplexml_load_string($data); //创建 SimpleXML对象

foreach($xml->depart as $node){

echo $node->name.’<br>’;

}

输出结果:

图片2

 

1.2.12. 基于 XML数据路径的查询 

SimpleXML组件提供了一种基于 XML数据路径的查询方法。 XML数据路径即从 XML的根到某一个标签所经过的全部标签。这种路径使用斜线“ /”隔开标签名。例如,对于上面的 XML数据,要查询所有的标签“name”中的值,从根开始要经过 departs、depart、employees和 employee标签,则其路径为“/departs/depart/employees/employee/name”。 SimpleXML组件使用 xpath方法来解析路径,其语法格式如下所示。xpath(string path)其中的 path为路径。该方法返回了一个包含有所有要查询标签值的数组。以下代码查询了上面 XML数据中的所有 name标签。

 

Eg:

$result = $xml->xpath(‘/departs/depart/employees/employee/name’);

echo ”<pre>”;print_r($result); //输出节点

输出结果:

图片3


你可能感兴趣的:(PHP,simplexml)