使用UBL /不同命名空间读取Php simplexml

时间:2014-02-13 21:36:24

标签: php xml namespaces simplexml

我有this kind of xml文件。

我的问题是我无法通过simplexml读取标记,因为不同的命名空间。示例BuyerCustomerParty->Party->Person->FamilyName标记。 BuyerCustomerPartyPartyPerson位于cac - 命名空间下,但FamilyName位于cbc - 命名空间下。奇怪的是,我可以写入标签并替换内容,但在此之前无法读取。

这里还有一些代码:

$sxe = simplexml_load_string($value);
$namespaces = $sxe->getDocNamespaces();
$sxe->registerXPathNamespace('cbc', $namespaces['cbc']);
$cbc = $sxe->children($namespaces['cbc']); 

//THIS PRINTS THE RIGHT VALUE            
$cbc->IssueDate;

$sxe->registerXPathNamespace('cac', $namespaces['cac']);
$cac = $sxe->children($namespaces['cac']); 

//BUT THIS PRINTS NOTHING
echo $fg = $cac->BuyerCustomerParty->Party->Person->FamilyName;

//BUT IF I CHANGE THE VALUE OF THE TAG... I CAN ACCESS THE TAG
$cac->BuyerCustomerParty->Party->Person->FamilyName = "value";

如何阅读标签?

1 个答案:

答案 0 :(得分:0)

我的解决方案是将cbc孩子包括在路径中。

echo $fg = $cac->BuyerCustomerParty->Party->Person->children('cbc',TRUE)->FamilyName;