在PHP中解析XML,返回多个值

时间:2011-10-20 05:24:46

标签: php xml

我需要获取“name”标签的值,其中tag是“required”和“optional”。如何在PHP中完成? 我想要的结果如下: 必需 - 二进制名称,doc测试名称 可选 - doc name1,doc name2,doc name3

<?xml version="1.0" encoding="UTF-8"?>
<test>
    <required>
        <item type="binary">
            <name>binary name</name>
            <url visibility="restricted">test.exe</url>
        </item>
        <item type="document" subtype="mytype">
            <name>doc test name</name>
            <url visiblity="visible">my.pdf</url>
        </item>
    </required>
    <optional>
        <item type="document">
            <name>doc name1</name>
            <url visiblity="visible">user_guide1.pdf</url>
        </item>
        <item type="document2">
            <name>doc name2</name>
            <url visiblity="visible">user_guide2.pdf</url>
        </item>

        <item type="document3">
            <name>doc name3</name>
            <url visiblity="visible">user_guide3.pdf</url>
        </item>
    </optional>
    <dependencies>
        <dependency>
            <url>test4.xml</url>
        </dependency>
    </dependencies>
</test>

2 个答案:

答案 0 :(得分:0)

您可以使用XML Parser或SimpleXML。

$xml = new SimpleXMLElement($yourXml);

答案 1 :(得分:0)

SimpleXML with XPath:http://www.php.net/manual/en/simplexmlelement.xpath.php

$xmlSrc =<<<XML
<test>
    <required>
        <item type="binary">
            <name>binary name</name>
            <url visibility="restricted">test.exe</url>
        </item>
        <item type="document" subtype="mytype">
            <name>doc test name</name>
            <url visiblity="visible">my.pdf</url>
        </item>
    </required>
    <optional>
        <item type="document">
            <name>doc name1</name>
            <url visiblity="visible">user_guide1.pdf</url>
        </item>
        <item type="document2">
            <name>doc name2</name>
            <url visiblity="visible">user_guide2.pdf</url>
        </item>

        <item type="document3">
            <name>doc name3</name>
            <url visiblity="visible">user_guide3.pdf</url>
        </item>
    </optional>
    <dependencies>
        <dependency>
            <url>test4.xml</url>
        </dependency>
    </dependencies>
</test>
XML;


$xml = new SimpleXMLElement($xmlSrc);

$required_names = $xml->xpath('/test/required/item/name');
$optional_names = $xml->xpath('/test/optional/item/name');


print_r($required_names);
print_r($optional_names);