Простые XML и пространства имен

У меня есть следующий код.

<entry> <job:location> <job:id>24</job:id> <job:region>6</job:region> </job:location> </entry> 

У меня проблема с пространствами имен. Как я могу читать содержание задания: тег региона в SimpleXML.

Попробуй это:

  <?php $entry = simplexml_load_file('entry.xml'); printf("%s\n", $entry->children('job', true)->location->region); ?> 

Чтобы проверить приведенный выше код в действии, нажмите здесь.

Дополнительные сведения об SimpleXml см. В этой статье.

Вы должны зарегистрировать пространство имен заданий , затем вы можете использовать зарегистрированное пространство имен в префиксе XPath для выбора того, что вы хотите:

 $sxe = new SimpleXMLElement($xml); $sxe->registerXPathNamespace('job', 'http://example.org/you-did-not-provide-the-job-namespaceURI-in-your-example'); $result = $sxe->xpath('//entry/job:location/job:region'); foreach ($result as $location) { echo $location . "\n"; } 

Я бы сделал это динамически.

 $xml = @simplexml_load_string($path) // loads your valid xml data foreach($xml->channel->item as $entry) { $namespaces = $entry->getNameSpaces(true); foreach($namespaces as $ns=>$value) { $job = $entry->children($namespaces[$ns]); $author = (string)$job->creator; if ($author != "") { $someVariable = (string) $dc->creator; } }