需要提取XML节点的文本和子节点(PHP)

问题描述:

考虑以下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://*.com/questions/188414/best-xml-parser-for-php ) – 2012-02-24 17:35:59

是不是一样通过以下的正则表达式

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

In实际上我想将xml保存到数据库,然后必须再次从数据库重新生成xml。因此,替换标签将根本没有帮助。 – Shahid 2012-02-24 17:42:03

使用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