2011-11-26 58 views
2

我真的需要使用命名空间的帮助。我如何获得以下代码才能正常工作?使用SimpleXML处理命名空间

<?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; 
} 
?> 

我想要做的就是获取名称元素内的内容。

回答

2

当yu使用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->前缀”,根据需要与特定命名空间进行比较,然后打印。

+0

太棒了:)绝对要把这个练习和学习不同的方式来使用它。 – yanike