在同一节点下将 child 与 cdata 混合。有效吗?
我需要解析以下 xml 文档(来自外部 Web 服务):
...
<dati>
<Riconoscimento>
<IdentificativoPosizione>xxxx</IdentificativoPosizione>
<OutputRestituiti>xxx</OutputRestituiti>
</Riconoscimento>
<![CDATA[text text text]]>
</dati>
...
问题是,直到存在节点“Riconoscimento”simplexml 解析器无法读取 cdata 部分,如果我删除该子项,一切都会正常工作。
所以主要问题是:它是一个有效的 xml 文档吗?如果它有效,是否有某种方法可以使用 php 访问 CDATA 部分,而无需手动删除额外的子项?
提前致谢。
I need to parse the following xml document (which is coming from external web service):
...
<dati>
<Riconoscimento>
<IdentificativoPosizione>xxxx</IdentificativoPosizione>
<OutputRestituiti>xxx</OutputRestituiti>
</Riconoscimento>
<![CDATA[text text text]]>
</dati>
...
The problem is that until there is node "Riconoscimento" simplexml parser fails to read cdata section, if i remove that child, everything is working without problems.
So the main question is: is it a valid xml document, and if it's valid is there some way to access CDATA section with php without manually removing extra childs?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以这样获取它:
注意
LIBXML_NOCDATA
参数,将 CDATA 转换为文本节点。You can get it like this:
Note the
LIBXML_NOCDATA
parameter to convert the CDATA to a text node.首先:这是一个有效的 XML 文档(请参阅 这里)。
在您的情况下,
元素是混合内容元素。
(无需传递
LIBXML_NOCDATA )
First of all: this is a valid XML document (see here).
In your case the
<data/>
-element is a mixed-content element.(there is no need to pass
LIBXML_NOCDATA
)