SimpleXML:获取属性可变的值

时间:2011-11-12 15:44:15

标签: php xml simplexml

<path>
    <name>
        <option id="6523">
            <needle>Haystack</needle>
            <foo>bar</foo>
        </option>

        <option id="6524">
            <needle>Haystack</needle>
            <foo>Bar</foo>
        </option>
    </name>
</path>

再次问好Stackoverflow!

例如,我想要选项6524中的Needle和foo,我如何使用SimpleXML?我试过xpath(almoast这里的每个主题在stackoverflow上建议xpath),但这对我来说没有用!你能帮帮我吗?
谢谢!

4 个答案:

答案 0 :(得分:2)

试试这段代码:

$xml_str = '.....';

$xml = simplexml_load_string($xml_str);
$result = $xml->xpath('//name/option[@id="6524"]/foo');

echo $result[0][0];    

On Codepad.org

答案 1 :(得分:0)

使用xpath:

<?php
$xml = <<<XML
<path>
    <name>
        <option id="6523">
            <needle>Haystack</needle>
            <foo>bar</foo>
        </option>

        <option id="6524">
            <needle>Haystack</needle>
            <foo>Bar</foo>
        </option>
    </name>
</path>
XML;

$xml = new SimpleXMLElement($xml);
$options = $xml->xpath('//option[@id = "6524"]');
$opt = $options[0];

echo 'needle: ' . $opt->needle . ', foo: ' . $opt->foo;

答案 2 :(得分:0)

尝试这样的事情:

$xml = simplexml_load_string($string);
$result = $xml->xpath('/path/name/option');
while(list( , $node) = each($result)) {
    echo $node->needle . " - " . $node->foo . "<br />";
}

答案 3 :(得分:0)

试试这个:

$ result = $ xml-&gt; xpath('// path / name / option [@ id =“6524”]');