PHP обрабатывает пространство имен с помощью SimpleXML - PullRequest
2 голосов
/ 26 ноября 2011

Мне действительно нужна помощь с использованием пространств имен. Как заставить следующий код работать правильно?

<?php
$mytv = simplexml_load_string(
'<?xml version="1.0" encoding="utf-8"?>
 <mytv>
    <mytv:channelone>
        <mytv:description>comedy that makes you laugh</mytv:description>
    </mytv:channelone>
 </mytv>'
);

foreach ($mytv as $mytv1)
{
    echo 'description: ', $mytv1->children('mytv', true)->channelone->description;
}
?>

Все, что я пытаюсь сделать, это получить содержимое внутри элемента name.

1 Ответ

2 голосов
/ 26 ноября 2011

когда вы используете пространства имен в XML XML, вы должны определять пространства имен, которые вы когда-либо используете ..! в коде, который я разместил, вы можете увидеть, как вы можете определить пространство имен, которое вы используете ..

вам нужно отобразить описание, относящееся к пространству имен, не так ли? поправьте меня, если я ошибаюсь., и, пожалуйста, напишите о своих целях правильно, чтобы я мог понять вашу проблему ..

Используйте этот код и посмотрите, сможете ли вы получить представление ...

$xml ='<mytv>
 <mytv:channelone xmlns:mytv="http://mycompany/namespaces/mytvs">
    <mytv:description >comedy that makes you laugh</mytv:description>
 </mytv:channelone>
</mytv>';

$xml = simplexml_load_string($xml);

$doc = new DOMDocument();  
$str = $xml->asXML(); 
$doc->loadXML($str); 

$bar_count = $doc->getElementsByTagName("description");

foreach ($bar_count as $node) 
{   
echo $node->nodeName." - ".$node->nodeValue."-".$node->prefix. "<br>";
}

здесь. Значение "$ node-> prefix" будет пространством имен тега, содержащего "description".

getElementsByTagName ("description") используется для получения всех элементов в xml, содержащих описание в виде тегов ... !! а затем, используя префикс $ node->, вы сравниваете его с нужным вам пространством имен и затем печатаете ..

...