我有以下xml字符串:
<PagesCreated xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<PageCreated>
<Appeal>General Appeal</Appeal>
<Fundraiser xmlns:a="http://schemas.datacontract.org/2004/07/GG.Api.Services.Data.Dto.PagesCreated">
<a:FirstName>Michelle</a:FirstName>
</Fundraiser>
<Id>4965523</Id>
</PageCreated>
</PagesCreated>
然后我处理:
$xml = new SimpleXMLElement($trimmed_result);
然后我可以使用:
访问PagesCreated的子节点 foreach ($xml->PageCreated as $PageCreated)
{
die(print_r($PageCreated->children()));
}
我的问题是我无法访问<Fundraiser xmlns:a="http://schemas.datacontract.org/2004/07/GG.Api.Services.Data.Dto.PagesCreated">
节点。我假设这是因为它是该命名空间的根。
如何访问<Fundraiser>
元素中的节点?
答案 0 :(得分:1)
必须编辑XML <Event>
才能正常工作......
确定无效(例如使用FirstName):
foreach($xml->xpath('//Fundraiser') as $f) {
var_export($f->xpath('a:FirstName'));
}
Here is an updated working link, with 3 Fundraisers; special thanks to @IMSoP
答案 1 :(得分:0)
问题是名称空间前缀。您必须使用ns前缀作为参数调用children
方法。看http://www.php.net/manual/en/simplexmlelement.children.php
在你的情况下:
$ns = $PageCreated->getNamespaces(true);
$PageCreated->children($ns['a']);
children方法只返回具有该前缀的节点。所有其他人都将被忽略。