duanliao2310 2012-02-12 21:37 采纳率: 100%
浏览 51

在php中按属性选择xml节点

How do I find the node value by knowing the attribute value without traversing through every child and every attribute/value ?

$dom = new DOMDocument;
$dom->load('test.xml');

$rows = $dom->getElementsByTagName('row');

foreach ($rows as $row) {

$header = VALUE OF <field name="header">
$text = VALUE OF <field name="text">

}

XML:

<resultset>
  <row>
    <field name="item">2424</field>
    <field name="header">blah blah 1</field>
    <field name="text" xsi:nil="true" />
    ...
    </row>

  <row>
    <field name="item">5321</field>
    <field name="header">blah blah 2</field>
    <field name="text">some text</field>
    ...
  </row>
</resultset>
  • 写回答

1条回答 默认 最新

  • dongnaigu2052 2012-02-12 21:49
    关注

    The simplest thing to do is use DOMXPath::querydocs

    The following code finds all the <field> nodes within <row> nodes that have a name attribute equal to "header":

    $dom = new DOMDocument;
    $dom->loadXML($str); // where $str is a string containing your sample xml
    $xpath = new DOMXPath($dom);
    $query = "//row/field[@name='header']";
    
    $elements = $xpath->query($query);
    
    foreach ($elements as $field) {
      echo $field->nodeValue, PHP_EOL;
    }
    

    Using the sample xml you provide, the above outputs:

    blah blah 1
    blah blah 2
    
    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀