2011-11-26 88 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