我正在尝试解析一些XML数据以获取某个属性的值 – 具体来说,我想找到作者.下面是一个非常简单但有效的例子. R节点重复多次.
<GSP VER="3.2">
<RES SN="1" EN="10">
<R N="4" MIME="application/pdf">
<Label>_cse_rvfaxixpaw0</Label>
<PageMap>
<DataObject type="Metatags">
<Attribute name="creationdate" value="D:20021024104222Z"/>
<Attribute name="author" value="Diana Van Winkle"/>
</DataObject>
</PageMap>
</R>
</RES>
</GSP>
目前我这样做:
$XML = simplexml_load_string($XMLResult);
$XMLResults = $XML->xpath('/GSP/RES/R');
foreach($XMLResults as $Result) {
$Label = $Result->Label;
$Author = ""; // <-- How do I get this?
}
有人可以向我解释如何取出“作者”属性吗?作者属性最多会出现1次但可能根本不存在(我可以自己处理)
解决方法:
这是解决方案.基本上,您可以从结果节点调用XPath,以获取name属性等于author的所有属性元素.
然后你检查并确保结果返回,如果确实如此,它将是index [0],因为XPath调用返回一个结果数组.然后使用attributes()函数获取属性的关联数组,最后获得所需的值.
$XML = simplexml_load_string($xml_string);
$XMLResults = $XML->xpath('/GSP/RES/R');
foreach($XMLResults as $Result) {
$Label = $Result->Label;
$AuthorAttribute = $Result->xpath('//Attribute[@name="author"]');
// Make sure there's an author attribute
if($AuthorAttribute) {
// because we have a list of elements even if there's one result
$attributes = $AuthorAttribute[0]->attributes();
$Author = $attributes['value'];
}
else {
// No Author
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。