我有这样的XML:
<properties>
<property>name</property><value>john</value>
<property>surname</property><value>wayne</value>
<property>age</property><value>33</value>
<property>blaaa</property><value>blaa</value>
</properties>
我必须解析这个,我使用了这样的东西:
$xle = simplexml_load_file('xml.xml');
foreach ($xle->properties as $properties) {
foreach ($properties->property as $property) {
echo $property, "<br />\n";
}
foreach ($properties->value as $value) {
echo $value, "<br />\n";
}
}
到目前为止我来到这里,我需要像
这样的东西“property = value” “name = john”
我的代码输出如下内容:
name
surname
age
blaa
john
wayne
33
blaa
答案 0 :(得分:2)
每个值都是跟随属性元素的兄弟。你可以很容易地用xpath表达它:
following-sibling::value[1]
如果<value>
元素是上下文节点,将为您提供<property>
元素。
使用SimpleXML获取上下文节点非常简单,所以这里是示例PHP代码:
$properties = simplexml_load_file('xml.xml');
foreach($properties->property as $property)
{
list($value) = $property->xpath('following-sibling::value[1]');
echo $property, " = ", $value, "\n";
}
示例XML的输出是:
name = john
surname = wayne
age = 33
blaaa = blaa
这看起来类似于属性文件(plist),我从内存中知道了相关的Q&amp; A,所以它对你来说也许很有趣:
答案 1 :(得分:1)
我同意,这是一种奇怪的格式,但有效。鉴于每个<property>
后跟<value>
,请转到...
$xml = simplexml_load_file('xmlfile.xml');
$prop = $xml->xpath('//property');
$value = $xml->xpath('//value');
$count=count($prop)-1;
for ($i=0;$i<=$count;$i++) {
echo $prop[$i].": ".$value[$i]."<br />";;
}
---&GT;现场演示:http://3v4l.org/0CS73