Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Xpath访问此xml节点中的数据(CDATA)?_Xml_Xpath_Cdata - Fatal编程技术网

如何使用Xpath访问此xml节点中的数据(CDATA)?

如何使用Xpath访问此xml节点中的数据(CDATA)?,xml,xpath,cdata,Xml,Xpath,Cdata,我有下一个XML: <?xml version="1.0" encoding="UTF-8"?> <mailAndMessageSettings> <settings> <add key="Url" value=""/> <add key="UserName" value=""/> <add key="Password" value=""/> </sett

我有下一个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>
但是,当我使用它时,它会选择从html中的第一个body标记(correct)到body标记的所有内容,而不是XML文档中的body标记


如何在不包含CDATA标记的情况下选择正文XML中的所有CDATA?

解析器只将CDATA作为文本进行访问,因为这就是它的用途


如果您没有验证,并且似乎没有将其声明为HTML(这将限制双主体标记的存在),我不确定您为什么需要
CDATA
声明。如果是因为它是动态生成的,而您不确定字符串中可能会生成什么,那么您应该将文本包装在动态生成的html中,放在
CDATA
中。

您需要获取CDATA节点,将其加载到单独的XmlDocument中,然后再次调用XPath查询。

使用
/mailAndMessageSettings/mail/body/text()

所以实际上我只是将外部body标记改为bodyHtml标记。。。。然后使用:

/mailAndMessageSettings/mail/bodyHtml
/mailAndMessageSettings/mail/bodyHtml