【问题标题】:reading xml: can xpath read 2 fields?读取 xml:xpath 可以读取 2 个字段吗?
【发布时间】:2010-07-26 19:43:10
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: php xml xpath simplexml


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-07
      • 2014-04-08
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      相关资源
      最近更新 更多