php - 读取xml:xpath可以读取2个字段吗?

标签 php xml xpath simplexml

我正在使用SimpleXMLElement和xpath尝试从最底部的xml读取<subcategory><name>。这段代码可以工作..但是while循环中的内容看起来有些混乱,现在我也想获取<subcategory><count>并以某种方式将其与相应的<subcategory><name>配对。

$names = $xml->xpath('/theroot/category/subcategories/subcategory/name/'); 
while(list( , $node) = each($names)) {
    echo $node; 
}


我的问题:仍然可以使用xpath进行配对,因为看起来它可以使工作更轻松?

<theroot>
<category>
  <name>Category 1</name>
  <subcategories>
      <subcategory>
          <name>Subcategory 1.1</name>
          <count>18</count>
      </subcategory>
      <subcategory>
          <name>Subcategory 1.2</name>
          <count>29</count>
      </subcategory>
  </subcategories>
</category>

<category>
  <name>Category 2</name>
  <subcategories>
      <subcategory>
          <name>Subcategory 2.1</name>
          <count>18</count>
      </subcategory>
      <subcategory>
          <name>Subcategory 2.2</name>
          <count>29</count>
      </subcategory>
  </subcategories>
</category>
</theroot>

最佳答案

如果您使用的是SimpleXML,并且知道确切的布局,则这样做可能会更容易:

$subcategories = $xml->xpath('/theroot/category/subcategories/subcategory');
foreach($subcategories as $subcategory){
    echo $subcategory->name.'='.$subcategory->count;
}


使用XPath,您当然可以选择subcategory的所有子节点,但是将它们配对备份可能比仅在最后一个节点使用xpath麻烦。

关于php - 读取xml:xpath可以读取2个字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338378/

相关文章:

javascript - 如何制作带有自动重定向的登录页面?

PHP Form 不向 mySQL 数据库添加数据?

php - 解析命名空间标签内的 XML 属性 (PHP)

android - 如何删除 ksoap 中的命名空间声明?

python - 从 Selenium for Python 中具有相同类的多个元素获取文本?

Php,有没有办法将类加载到命名空间中?

xml - 尝试使用 REST API 在 sonatype Nexus 中创建存储库

c# - 将字符串转换为正确的日期字符串

xml - XSLT:检查是否在节点列表中找到节点

python - scrapy 问题 : xpath & regex - Regex not working as it should be