帮助使用php进行xml解析

时间:2010-03-17 05:49:14

标签: php xml

我有以下示例xml:

<entity id="1">
    <name>computer</name>
    <type>category</type>
    <entities>
        <entity id="2">
            <name>mac</name>
            <type>category</type>
        </entity>
        <entity id="3">
            <name>linux</name>
            <type>category</type>
            <entities>
                <entity id="4">
                    <name>ubuntu</name>
                    <type>category</type>
                </entity>
                <entity id="5">
                    <name>redhat</name>
                    <type>category</type>
                    <entities>
                        <entity id="6">
                            <name>server</name>
                            <type>category</type>
                        </entity>
                        <entity id="7">
                            <name>desktop</name>
                            <type>category</type>
                        </entity>
                    </entities>
                </entity>
            </entities>
        </entity>
    </entities>
</entity>

如果我有一个id,请说5.是否可以检索以下内容:

  • id = 5(redhat)
  • 的实体的名称
  • 所有子实体及其ID和名称(6:服务器和7:桌面)
  • 所有父实体及其ID和名称(1:计算机,2:mac和3:linux)

我是一个解析xml的菜鸟。这是由xpath only还是xquery / xpath?

完成的

如果有人可以通过simplexml为我提供一些示例代码,我将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用SimpleXML

答案 1 :(得分:1)

<?php
$simpleXml = simplexml_load_string($xml); // or load your file, whatever

if (($element = $simpleXml->xpath('//*[@id = 5]'))) {
    var_dump($element);
    echo 'Element and descendants: ', $element[0]->asXML(), PHP_EOL;
    echo 'Name of the entity: ', $element[0]->name, PHP_EOL;
}

SimpleXML提供了非常直观的XML处理,但它比完整的DOM类更受限制。