Я знаю, что подобные вопросы были опубликованы ранее, но я не могу разобрать этот XML-файл с пространствами имен.
Вот ссылка на него, потому что она слишком велика для публикации здесь: https://tsdrapi.uspto.gov/ts/cd/casestatus/sn86553893/info.xml
Я пробовал использовать simplexml_load_file
но не создавал объект xml. Затем я нашел похожие проблемы и попробую что-то вроде этого, если я уже загрузил файл с именем it 86553893.xml
Вот мой php-код:
$xml= new SimpleXMLElement("86553893.xml"); foreach($xml->xpath('//com:ApplicationNumber') as $event) { var_export($event->xpath('com:ApplicationNumberText')); }
Вам нужно будет зарегистрировать пространства имен для каждого элемента, который вы хотите использовать:
$xml= new SimpleXMLElement("86553893.xml"); $xml->registerXpathNamespace('com', 'http://www.wipo.int/standards/XMLSchema/Common/1'); foreach ($xml->xpath('//com:ApplicationNumber') as $event) { $event->registerXpathNamespace( 'com', 'http://www.wipo.int/standards/XMLSchema/Common/1' ); var_export($event->xpath('com:ApplicationNumberText')); }
В DOM это различно, вы используете экземпляр DOMXPath, поэтому это только один объект, и вам придется регистрировать пространства имен только один раз.
$dom = new DOMDocument(); $dom->load("86553893.xml"); $xpath = new DOMXpath($dom); $xpath->registerNamespace('com', 'http://www.wipo.int/standards/XMLSchema/Common/1'); foreach ($xpath->evaluate('//com:ApplicationNumber') as $event) { var_export($xpath->evaluate('string(com:ApplicationNumberText)', $event)); }
Вам нужно передать 3-й параметр как true
:
<?php $xml= new SimpleXMLElement("info.xml", NULL, true); foreach($xml->xpath('//com:ApplicationNumber') as $event) { var_export($event->xpath('com:ApplicationNumberText')); }
Вывод:
array ( 0 => SimpleXMLElement::__set_state(array( )), )
вы можете больше узнать о SimpleXMLElement
в: