0

考虑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

请帮助我如何实现这一目标???

4

2 回答 2

0

问题是您顶部的 XML 格式不正确。

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

XML 转义

转义字符列表

有了这个:

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

您可以读取节点。

于 2012-04-16T08:55:12.263 回答
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,一个很大的禁忌......

于 2012-04-16T09:51:24.180 回答