使用C#在XML中的CDATA#
问题描述:
这是一种不寻常的情况。我们被迫与第三方进行交互,第三方需要将xml响应中的某些值包装在一起,即使它只是一个字符串值。使用C#在XML中的CDATA#
Example: <Property name="someName" type="String"><![CDATA[someValue]]></Property>
我们如下增加这些属性节点的文档:
XPathExpression query = xPathNavigator.Compile(xpath);
XPathNavigator node = xPathNavigator.SelectSingleNode(query.Expression, xmlNamespaceManager);
string property = "<Property name='someName' type='String'><![CDATA[someValue]]></Property>";
node.AppendChild(property);
的问题是,生成的XML看起来像这样
<Property name="someName" type="String">someValue</Property>
的CDATA状态越来越剥离出来。
答
您可以通过使用的XmlWriter来写入数据实现这一点:
private static void WriteProperty(XmlWriter writer, string name, string type, string value)
{
writer.WriteStartElement("Property");
writer.WriteAttributeString("name", name);
writer.WriteAttributeString("type", type);
writer.WriteCData(value);
writer.WriteEndElement();
}
// call the method from your code
XPathExpression query = xPathNavigator.Compile(xpath);
XPathNavigator node = xPathNavigator.SelectSingleNode(query.Expression, xmlNamespaceManager);
using (XmlWriter writer = node.AppendChild())
{
WriteProperty(writer, "someName", "String", "someValue");
}
答
您可能想检查node.AppendChild()。WriteRaw(property)是否有效,因为您似乎是手动设置XML字符串的格式。
+0
我曾尝试,不走但其他职位得到它,谢谢。 – typemismatch 2009-06-05 22:35:53
谢谢!!!! (b) – typemismatch 2009-06-05 22:35:30