2012-04-16 35 views
0

考慮XML如何使用PHP(DOM)將嵌套標記作爲字符串而非實際嵌套標記?

<data> 
<node1> 
     some text some text <nested-node>nest node content</nested-node> some text 
</node1> 
</data> 

要訪問<node1>標籤(即我可以做),但我想內容遵循...

some text some text &lt;nested-node&gt;nest node content &lt;/nested-node&gt; 
some text 

請幫助我,我怎麼能做到這一點???

+0

也許你應該谷歌,當你有一個真正的問題來解決這個練習,你可以寫在這裏。解決方案:閱讀XML並進行html轉義。 – Stony 2012-04-16 08:42:47

+0

那是我在做什麼? – Shahid 2012-04-16 08:47:24

回答

0

問題是您的頂層XML格式不正確。

您不能在文本序列中使用標籤。解析器刪除這些元素。

XML Escaping

List of escape characters

有了這個:

$xml = new SimpleXMLElement(file_get_contents('xmltest.xml')); 
var_dump($xml->node1); 

你可以閱讀的節點。

0

我很好奇這個問題。 OP想要做什麼真的不可能? @Stony指出,格式不正確的XML使得這種情況變得不可能,如果XML功能不適用於OP需要的格式錯誤的XML,我也不會感到驚訝。

這裏的嵌套元素的XML的例子:http://www.featureblend.com/xml-nesting.html

如果你形成了你這樣的XML:

<data> 
    <master_node> 
    <nested1>First nested node text.</nested1> 
    <nested2>Second nested node text.</nested2> 
    <nested3>Third nested node text.</nested3> 
    </master_node> 
</data> 

你能夠得到所有的文本內容:

$xml = new SimpleXMLElement(file_get_contents('xmltest.xml')); 
var_dump($xml->master_node); 

也許這可能與JavaScript或普通PHP類似。只需將文件加載到變量中,並使用正則表達式或字符串搜索函數進行解析。用正則表達式解析XML,是的,我知道,它就像解析正則表達式的HTML,一個很大的禁忌...

+0

嗯...謝謝你的指導...我也想加載文件,然後用替換嵌套標籤,即將其轉換爲字符串數據... – Shahid 2012-04-16 11:42:40

+0

@ Shahid這將是一種方式。我沒有時間先前測試如何將此元素的標籤輸出爲實體:'嵌套節點<encoded_tag>內容</encoded_tag >編碼後'。它在頁面上很好地打印,但當然沒有標籤。嘗試使用'嵌套節點<強>內容< /強>編碼後'並且您看到標記內容格式符合 - 即標記位於源代碼中。 – 2012-04-16 12:43:26