2012-02-24 116 views
0

考慮以下XML片段XML的幫助。需要提取XML節點的文本和子節點(PHP)

<s1> 
S1 Tag: s1 content 1 
<test1>Test1 Tag: content</test1> 
S1 Tag: s1 content 2 
<test2>Test2 Tag: content</test2> 
S1 Tag: s1 content 3 
</s1> 

我想提取<s1>標籤文本(S1標籤:S1內容1,S1標籤:S1內容2,S1標籤:S1內容3)及其所有子標籤(<test1><test2>)以及其內容(Test1標籤:內容,Test2標籤:內容)。

輸出可以是任何格式例如(最後我必須堅持它在DB和將檢索再次產生相同的XML)

S1 tag: S1 Tag: s1 content 1 

    test1 tag: Test1 Tag: content 

    S1 Tag: s1 content 2 

    test2 tag: Test2 Tag: content 

    S1 Tag: s1 content 3 
+0

所以很多教程谷歌搜索的時候'PHP解析XML tutorial' ... [PHP的最佳XML分析器(的 – 2012-02-24 17:32:46

+0

可能重複http://stackoverflow.com/questions/188414/best-xml-parser-for-php ) – 2012-02-24 17:35:59

回答

-1

是不是一樣通過以下的正則表達式

preg_replace('<[^>]+>', ' ', $xmlStr) 
+0

In實際上我想將xml保存到數據庫,然後必須再次從數據庫重新生成xml。因此,替換標籤將根本沒有幫助。 – Shahid 2012-02-24 17:42:03

0

使用simplexml的去除所有標籤:

$stuff = " <s1> 
S1 Tag: s1 content 1 
<test1>Test1 Tag: content</test1> 
S1 Tag: s1 content 2 
<test2>Test2 Tag: content</test2> 
S1 Tag: s1 content 3 
</s1>"; 

    $xml = simplexml_load_string($stuff); 

    $test1 = (string) $xml->s1->test1; 

    write_to_db($field, $test1); 
+0

http://us.php.net/simplexml_load_string – rahimvirani 2012-02-24 17:42:10

+0

使用這個概念。實際的代碼並不意味着通過複製/粘貼 – rahimvirani 2012-02-24 17:43:05

+0

hmmmmm ...是的我明白..我面臨的主要問題是檢索s1內容和所有它的子標籤。實際上,我的代碼只是提取了唯一的「S1 Tag:s1 content 1」內容,並忽略了其餘的 – Shahid 2012-02-24 17:47:57