Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
C# 使用C语言的XML中的CDATA#_C#_Xml_Xpath - Fatal编程技术网

C# 使用C语言的XML中的CDATA#

C# 使用C语言的XML中的CDATA#,c#,xml,xpath,C#,Xml,Xpath,这是一种不寻常的情况。我们被迫与第三方接口,后者要求xml响应中的某些值被包装,即使它只是一个字符串值 Example: <Property name="someName" type="String"><![CDATA[someValue]]></Property> 示例: 我们正在将这些属性节点添加到文档中,如下所示: XPathExpression query = xPathNavigator.Compile(xpath); XPathNavigat

这是一种不寻常的情况。我们被迫与第三方接口,后者要求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);
XPathExpression query=xPathNavigator.Compile(xpath);
XPathNavigator节点=XPathNavigator.SelectSingleNode(query.Expression,xmlNamespaceManager);
字符串属性=”;
node.AppendChild(属性);
问题是,生成的xml如下所示

<Property name="someName" type="String">someValue</Property>
someValue

CDATA不断被剥离。

您可能需要检查node.AppendChild().WriteRaw(属性)是否有效,因为您似乎正在手动格式化XML字符串。

您可能需要检查node.AppendChild().WriteRaw(属性)是否有效,鉴于您似乎正在手动格式化XML字符串。

您可以通过使用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");
}

您可以通过使用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");
}

隐马尔可夫模型。。在这里喝啤酒有点晚了(实际上是睡觉时间)。你能把它放在冰箱里过夜吗(很高兴事情解决了)嗯。。在这里喝啤酒有点晚了(实际上是睡觉时间)。你能把它放在冰箱里过夜吗(很高兴它成功了)