У меня есть this kind of xml документ.Php simplexml чтение с UBL/разными пространствами имен
Моя проблема в том, что я не могу читать теги с помощью simplexml, потому что разные пространства имен. Пример BuyerCustomerParty->Party->Person->FamilyName
тег. BuyerCustomerParty
, Party
и Person
находятся под cac
-namespace, но FamilyName
находится под cbc
-namespace. Странно то, что я могу писать в тег и заменять содержимое, но не могу его прочитать до этого.
Вот некоторые код также:
$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";
Как я могу прочитать табличку?
'xpath' может помочь. см. мой ответ здесь: http://stackoverflow.com/questions/21788253/simplexml-is-not-parsing-my-epp-xml-messages – michi
Возможный дубликат [Проблемы с простым пространством имен PHP] (http://stackoverflow.com/вопросы/2098170/PHP-пространства имен-SimpleXML-проблемы) – IMSoP