我在xml文档中嵌入了html标签,我想保留它们。
<?php
$xml = "<root><node1>node1 contains no html</node1><node2>node2 contains a <sup>superscript</sup> html tag</node2></root>";
$xmlObj = simplexml_load_string($xml);
echo "node1:\n";
echo $xmlObj->node1;
echo "\nnode2:\n";
echo $xmlObj->node2;
echo "\nnode1 using asXML\n";
echo $xmlObj->node1->asXML();
echo "\nnode2 using asXML\n";
echo $xmlObj->node2->asXML();
echo "\n\n";
?>
此代码输出:
node1:
node1 contains no html
node2:
node2 contains a html tag
node1 using asXML
<node1>node1 contains no html</node1>
node2 using asXML
<node2>node2 contains a <sup>superscript</sup> html tag</node2>
我只想输出:
node2 contains a <sup>superscript</sup> html tag
有没有一种方法可以从xml中提取出node2来保留<sup>
标记和其他html标记,而却不能与<node2>
xml标记一起输出?
谢谢。
编辑:这被标记为重复,但是在重复问题上接受的答案不是我的首选答案,因此我在下面添加了我的首选答案,该答案由CrMosk在2011年8月20日给出
function SimpleXMLElement_innerXML($xml)
{
$innerXML= '';
foreach (dom_import_simplexml($xml)->childNodes as $child)
{
$innerXML .= $child->ownerDocument->saveXML( $child );
}
return $innerXML;
};
我刚刚将此功能添加到了我的项目中,然后在需要获取不带有xml标记的节点时调用它:
echo "\nnode2 using new function\n";
echo SimpleXMLElement_innerXML($xmlObj->node2);
输出所需文本:
node2 using new function
node2 contains a <sup>superscript</sup> html tag