【问题标题】:Get all children from certain xml child element using SimpleXMLElement and xpath使用 SimpleXMLElement 和 xpath 从某个 xml 子元素中获取所有子元素
【发布时间】:2015-11-03 10:39:43
【问题描述】:

我有类似的xml:

<root xmlns="urn:test:apis:baseComponents">
  <books>
    <book>
      <name>50 shades of grey</name>
    </book>
  </books>
  <disks>
    <disk>
      <name>Britney Spears</name>
    </disk>
  </disks>
</root>

还有这样的php代码:

$xml = new SimpleXMLElement($xml);
$books = $xml->books;
$disks = $xml->disks;

$disks->registerXPathNamespace('x', 'urn:test:apis:baseComponents');
$books->registerXPathNamespace('x', 'urn:test:apis:baseComponents');

$b_names = $books->xpath('//x:name');

b_names 包含具有 2 个值而不是 1 个值的数组。第一个保存 books->book->name,第二个保存 disks->disk->name。

您能否解释一下我做错了什么以及如何找到只有一个元素的子元素?

我使用 xpath 而不是使用 SimpleXMLElement 手动获取值的原因是我不知道我想提前搜索什么值。

【问题讨论】:

    标签: php xpath simplexml


    【解决方案1】:

    使用$books-&gt;xpath('.//x:name') 搜索$books 变量的后代,而不是根节点/文档节点的后代(路径//x:name 会这样做)。

    【讨论】:

    • 就这么简单。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2014-11-18
    • 2010-12-17
    相关资源
    最近更新 更多