【问题标题】:PHP unable to access Xpath node of a SimpleXMLElement ObjectPHP 无法访问 SimpleXMLElement 对象的 Xpath 节点
【发布时间】:2015-01-06 03:29:17
【问题描述】:
$x = new DomDocument();
$x->loadXML($responseXml);
$xml = simplexml_import_dom($x);

使用 print_r($xml) 输出数组得到以下结果:

SimpleXMLElement Object
(
    [Timestamp] => 2014-11-09T18:28:47.843Z
    [Ack] => Success
    [Version] => 897
    [Build] => E897_UNI_API5_17253832_R1
    [Store] => SimpleXMLElement Object
        (
            [Name] => test
            [SubscriptionLevel] => Basic
            [Description] => Welcome Message.           
        )

)

使用 $xml->Store->Description 输出“欢迎消息”。

当我使用 xpath 使用以下代码返回描述节点时,我得到一个空数组:

$xpath = new DOMXPath($x);
$result = $xpath->query("/Store/Description");

为什么会失败?

【问题讨论】:

    标签: php xml xpath


    【解决方案1】:

    真的很简单,我只需要注册命名空间:

    $xml->registerXPathNamespace('urn', 'ebay:apis:eBLBaseComponents');

    【讨论】:

    • 这就是为什么您应该在问题中发布原始 XML。不是 SimpleXML 调试。我们应该如何知道命名空间?
    【解决方案2】:

    使用简单的 xml 更容易。

    $xml = new SimpleXMLElement($string);
    $result = $xml->xpath('/Store/Description');
    

    http://php.net/manual/en/simplexmlelement.xpath.php

    【讨论】:

    • 即使我在描述之后删除了尾随的“/”,我仍然得到一个空白数组。
    • 在此处粘贴结果 XML。
    • print_r($xml) 输出:“数组 ()”
    • XML ;) 不是空结果
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多