我试图解析我的xml,它有一个CData标记作为其节点的值。我的XML结构如下。从C#中解析XML中的CData
<node1>
<node2>
<![CDATA[ <[email protected]@@BREAK TYPE="TABLE" @@@--> <P><CENTER>... html goes here.. ]]>
</node2>
</node1>
我的代码如下。当我解析时,我得到了CData标签的响应,而不是CData标签中的值。你能帮我解决我的问题吗?
XDocument xmlDoc = XDocument.Parse(responseString);
XElement node1Element = xmlDoc.Descendants("node1").FirstOrDefault();
string cdataValue = node1Element.Element("node2").Value;
Actual Output: <![CDATA[ <[email protected]@@BREAK TYPE="TABLE" @@@--> <P><CENTER>... html goes here.. ]]>
Expected Output: <[email protected]@@BREAK TYPE="TABLE" @@@--> <P><CENTER>... html goes here..
我不确定System.XML.Linq.XDocument是否导致问题。所以我尝试了XMLDocument版本如下。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseString);
XmlNode node = xmlDoc.DocumentElement.SelectSingleNode(@"/node1/node2");
XmlNode childNode = node.ChildNodes[0];
if (childNode is XmlCDataSection)
{}
而我的if循环返回false。所以看起来像我的XML有什么问题,它实际上不是一个有效的CData?请帮我解决这个问题。 请让我知道你是否需要更多的细节。
是否有理由解答此问题?我试图确保我提供所有必要的信息。 – csharpnewbie