【问题标题】:Use xpath to obtain value使用xpath获取值
【发布时间】:2012-09-06 13:56:37
【问题描述】:

好的,所以我有这个 xml:

<resin xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin">
<cluster>
<host host-name="www.1.com">
<host-alias>1.com</host-alias>
<root-directory>c:/docroot</root-directory>
<web-app id="/" document-directory="."/>
</host>
<host host-name="www.2.com">
<host-alias>2.com</host-alias>
<root-directory>c:/docroot</root-directory>
<web-app id="/" document-directory="."/>
</host>
</cluster>
</resin>

我如何获取(在 php 中)主机名“www.1.com”的 xpath 如果我使用这个:

$items = $xpath->query(sprintf('//host[@host-name="%s"]', $hostNameToLookFor));

没有

xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin"

有效

请帮忙,它快把我逼疯了! 谢谢!

【问题讨论】:

    标签: php xpath namespaces


    【解决方案1】:
            $data = <<<xml
    <resin xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin">
    <cluster>
    <host host-name="www.1.com">
    <host-alias>1.com</host-alias>
    <root-directory>c:/docroot</root-directory>
    <web-app id="/" document-directory="."/>
    </host>
    <host host-name="www.2.com">
    <host-alias>2.com</host-alias>
    <root-directory>c:/docroot</root-directory>
    <web-app id="/" document-directory="."/>
    </host>
    </cluster>
    </resin>
    
    xml;
    
            $xml = new SimpleXMLElement($data);
            $xml->registerXPathNamespace('ns', 'http://caucho.com/ns/resin');
            $xml->registerXPathNamespace('resin', 'urn:java:com.caucho.resin');
    
            foreach ($xml->xpath ('//ns:host[@host-name="www.2.com"]') as $v)
            {
                // ...
            }
    

    【讨论】:

    • 你尝试过 var_dump $v 吗?
    • 在我的入门中,我使用了 SimpleXMLElement。我不确定 DOMDocument。
    • 你能重写我整个函数吗? (我不是程序员,所以...)
    • 使用 $xml = simplexml_import_dom($doc); 将现有的 DOMDocument 转换为 SimpleXMLElement,然后如上所示继续。
    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 2014-08-09
    • 1970-01-01
    • 2012-02-07
    • 2012-06-30
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多