获取属性值SimpleXML Xpath PHP

时间:2016-01-17 16:48:12

标签: php xml simplexml

RewriteRule ^/?mypage/!(test)$ mypage.php?arg=$1 [L,NC]

使用simplexml / xpath我想返回' NAME'的属性文本。和'代码'对于ID 001,有很多行,因此结果将根据ID号

而不同

修改 访问CDATA不是问题所在,它返回名称和代码的值,其中id = 001等

继承人我试图得到的名字

<RESULTS> <ROW> <COLUMN NAME="ID"><![CDATA[001]]></COLUMN> <COLUMN NAME="NAME"><![CDATA[ORG001]]></COLUMN> <COLUMN NAME="CODE"><![CDATA[1234]]></COLUMN> </ROW> </RESULTS>

由于

1 个答案:

答案 0 :(得分:0)

不确定你真正尝试做什么。据我了解......

$xml = simplexml_load_string($x); // assuming XML in $x
$hit = (string)$xml->xpath("/RESULTS/ROW[COLUMN/@NAME='ID' and COLUMN/text() = '001']/COLUMN[@NAME='NAME']")[0];

以上代码一步一步:

  • (string)将强制结果为字符串,而不是对象
  • xpath-expression:获取<ROW>,其子<COLUMN>的属性为NAME='ID',值为001
  • 从该特定<ROW>开始,选择属性为<COLUMN>
  • 的子NAME='NAME'
  • xpath()返回SimpleXml元素数组,[0]我们选择第一个条目。
  • 请注意,此代码缺少检查是否匹配。

看到它有效:https://eval.in/503464

修改
重新阅读问题。要获得所需的结果,请选择<ROW>,然后迭代<COLUMN>

$hit = $xml->xpath("/RESULTS/ROW[COLUMN/@NAME='ID' and COLUMN/text() = '001']")[0];
foreach ($hit as $column)
    echo $column['NAME'] . ": " . $column . PHP_EOL;

输出:

ID: 001
NAME: ORG001
CODE: 1234

请参阅https://eval.in/503493