获取属性值 SimpleXML Xpath PHP
Get attribute values SimpleXML Xpath PHP
<RESULTS>
<ROW>
<COLUMN NAME="ID"><![CDATA[001]]></COLUMN>
<COLUMN NAME="NAME"><![CDATA[ORG001]]></COLUMN>
<COLUMN NAME="CODE"><![CDATA[1234]]></COLUMN>
</ROW>
</RESULTS>
使用 simplexml / xpath 我想 return 'NAME' 的属性文本和 'CODE' 的 ID 001,有很多行所以结果会根据 id 不同数
编辑:
访问 CDATA 不是这里的问题,它是 returning 名称和代码的值,其中 id = 001 等
这是我试图得到的名字
echo (string)$xml->xpath('/RESULT/ROW/COLUMN[@ID] = ["001"]/COLUMN[@Name="NAME"]');
谢谢
不确定您真正想做什么。据我了解...
$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)
将强制结果为字符串,而不是 object
- xpath-expression:得到
<ROW>
和 child <COLUMN>
属性 NAME='ID'
和值 001
- 从那个特定的
<ROW>
开始,select 一个 child <COLUMN>
属性为 NAME='NAME'
xpath()
returns SimpleXml
个元素的数组,[0]
我们 select 它的第一个条目。
- 请注意,此代码根本不检查是否存在匹配项。
看到它工作:https://eval.in/503464
编辑:
Re-read 问题。要获得您想要的结果,select <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
<RESULTS>
<ROW>
<COLUMN NAME="ID"><![CDATA[001]]></COLUMN>
<COLUMN NAME="NAME"><![CDATA[ORG001]]></COLUMN>
<COLUMN NAME="CODE"><![CDATA[1234]]></COLUMN>
</ROW>
</RESULTS>
使用 simplexml / xpath 我想 return 'NAME' 的属性文本和 'CODE' 的 ID 001,有很多行所以结果会根据 id 不同数
编辑: 访问 CDATA 不是这里的问题,它是 returning 名称和代码的值,其中 id = 001 等
这是我试图得到的名字
echo (string)$xml->xpath('/RESULT/ROW/COLUMN[@ID] = ["001"]/COLUMN[@Name="NAME"]');
谢谢
不确定您真正想做什么。据我了解...
$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)
将强制结果为字符串,而不是 object- xpath-expression:得到
<ROW>
和 child<COLUMN>
属性NAME='ID'
和值001
- 从那个特定的
<ROW>
开始,select 一个 child<COLUMN>
属性为NAME='NAME'
xpath()
returnsSimpleXml
个元素的数组,[0]
我们 select 它的第一个条目。- 请注意,此代码根本不检查是否存在匹配项。
看到它工作:https://eval.in/503464
编辑:
Re-read 问题。要获得您想要的结果,select <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