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

在PHP中解析返回多个值的XML,php,xml,Php,Xml,我需要得到“name”标签的值,其中标签是“必需的”和“可选的”。如何在PHP中做到这一点? 我想要的结果是: 必需-二进制名称,文档测试名称 可选-文件名1、文件名2、文件名3 <?xml version="1.0" encoding="UTF-8"?> <test> <required> <item type="binary"> <name>binary name</name&g

我需要得到“name”标签的值,其中标签是“必需的”和“可选的”。如何在PHP中做到这一点? 我想要的结果是: 必需-二进制名称,文档测试名称 可选-文件名1、文件名2、文件名3

<?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>

双名
test.exe
文档测试名称
my.pdf
文件名称1
用户指南1.pdf
文件名称2
用户指南2.pdf
文件名3
用户指南3.pdf
test4.xml

您可以使用XML解析器或SimpleXML

$xml = new SimpleXMLElement($yourXml);
带XPath的SimpleXML:


$xmlSrc=Phil关于SimpleXML/XPath的说法在另一种情况下有效吗?这和那个问题有什么不同呢?我替换$xml=simplexml\u load\u文件('text.xml');代替$xml=新的simplexmlement($xmlSrc);那么它对我来说很管用。
$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);