如何使用PHP(DOM)将嵌套标记作为字符串而不是实际的嵌套标记?

时间:2012-04-16 08:41:10

标签: php dom

考虑xml

<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

请帮帮我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

问题是你的XML在顶层没有很好的形成。

您不能在文本序列中使用标记。解析器删除了这些元素。

XML Escaping

List of escape characters

有了这个:

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

你可以阅读节点。

答案 1 :(得分: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一样,这是一个很大的禁忌......