怎么读< abc:xyz>使用php的xml标签?

时间:2010-06-28 07:02:35

标签: php xml

使用我的下面代码,我可以轻松阅读<abcxyz> xml标签。但我怎样才能读取<abc:xyz> </abc:xml> xml标签之间的数据.. xml标签使用php.pls帮助....

我的php示例代码......

 $objDOM->load("abc.xml"); 
  $note = $objDOM->getElementsByTagName("note");  
   foreach( $note as $value )
   {
    $tasks = $value->getElementsByTagName("tasks");
    $task  = $tasks->item(0)->nodeValue;
    $details = $value->getElementsByTagName("details");
    $detail  = $details->item(0)->nodeValue;    
    echo "$task :: $detail<br>";
   }

我的XML示例代码:

<mynotes>
     <note>
        <tasks>Task 1</tasks>
        <details>Detail 1</details>
     </note>
     <abc:xyz> Cannot Read the XML data between this tag</abc:xyz>
 </mynotes>

请指导我......

感谢
里亚德

3 个答案:

答案 0 :(得分:7)

abc:xyz表示该元素名为xyz名称空间表示abc。命名空间部分实际上是URI的简写,通常也在XML文件中给出。例如,您可能会看到:

xmlns:abc="http://www.abc.com/xml"

在这种情况下,冒号前面有abc的元素位于命名空间http://www.abc.com/xml中。

要检索此元素,您需要使用getElementsByTagNameNS并将http://www.abc.com/xml作为命名空间。

答案 1 :(得分:2)

答案 2 :(得分:1)

像其他人所建议的那样使用DOMDocument::getElementsByTagNameNS方式,这里是一个有效的代码(包括阅读内部内容),假设您还有一些命名空间声明(如<abc:response xmlns:abc="http://api-url">)部分指出由@Sjoerd -

$xml = '<?xml version="1.0"?>
         <abc:response xmlns:abc="http://api-url">
         <mynotes>
          <note>
            <tasks>Task 1</tasks>
            <details>Detail 1</details>
          </note>
         <abc:xyz> Can Read the XML data between this tag!!</abc:xyz>
        </mynotes>
        </abc:response>';

$dom = new DOMDocument;
// load the XML string defined above
$dom->loadXML($xml);


foreach ($dom->getElementsByTagNameNS('http://api-url', '*') as $element) 
{
  //echo 'see - local name: ', $element->localName, ', prefix: ', $element->prefix, "\n";
  if($element->localName == "xyz")
      echo get_inner_html($element);

}

function get_inner_html( $node ) 
{ 
    $innerHTML= ''; 
    $children = $node->childNodes; 
    foreach ($children as $child) 
    { 
        $innerHTML .= $child->ownerDocument->saveXML( $child ); 
    } 

    return $innerHTML;  
}

Here是显示输出的工作链接。

请注意,我刚刚将xml包装在其中 -

   '<?xml version="1.0"?>
         <abc:response xmlns:abc="http://api-url">'
              .$yourxml
         .'</abc:response>';

我使用了我从这里得到的解决方案PHP DOM get nodevalue html? (without stripping tags) ...这些天遇到了类似的问题。