我有下一个XML:
<?xml version="1.0" encoding="UTF-8"?>
<mailAndMessageSettings>
<settings>
<add key="Url" value=""/>
<add key="UserName" value=""/>
<add key="Password" value=""/>
</settings>
<mail>
<subject>
Mp3 Submission
</subject>
<body>
<![CDATA[
<meta http-equiv="Content-Type" content="text/html; charset="utf-8""/>
<head></head>
<body>
<p>Hi,</p>
<p>Please find the attached mp3</p>
<p><a href="mymp3.mp33">here</a></p>
<p>Regards,</br>
Pete</p>
</body>
</html>
]]>
</body>
</mail>
</mailAndMessageSettings>
我想使用XPath:
/mailAndMessageSettings/mail/body
然而,当我使用它时,它正在选择从第一个body标签(正确)到html内部的body标签的所有内容,而不是XML文档中的body标签......
如何在不包含CDATA标签的情况下选择正文XML中的所有CDATA?
答案 0 :(得分:1)
您需要获取CDATA节点,将其加载到单独的XmlDocument中,然后再次调用XPath查询。
答案 1 :(得分:1)
所以实际上我只是将外部主体标签更改为bodyHtml标签而不是....然后使用:
/mailAndMessageSettings/mail/bodyHtml
答案 2 :(得分:0)
解析器只会使CDATA可以作为文本访问,因为它就是它的用途。
如果您没有验证这一点,并且您似乎没有将其声明为HTML(这将限制双体标签的存在),我不确定您为什么需要CDATA
声明。如果是因为它是动态生成的,并且您不确定字符串中可能生成了什么,那么您应该将文本包装在CDATA
中动态生成的html中。
答案 3 :(得分:0)
使用/mailAndMessageSettings/mail/body/text()
。