[英]CDATA in XML using C#
这是不寻常的情况。 我们被迫与第三方联系,该第三方要求在xml响应中包装某些值,即使它只是一个字符串值。
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");
}
考虑到您似乎还是要手动格式化XML字符串,因此您可能想检查一下node.AppendChild()。WriteRaw(property)是否可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.