使用我的下面代码,我可以轻松阅读<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>
请指导我......
感谢
里亚德
答案 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) ...这些天遇到了类似的问题。