繁体   English   中英

使用C#的XML中的CDATA

[英]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)是否可以工作。

转换XML <!--CDATA to DataTable C#</div--><div id="text_translate"><p> 我有 Webservice SOAP 方法,它将 Json 作为输入参数。</p><pre> //For sample string jsonString = "[{"Year":"2020","UserId":"1","Comp":"20","DeptId":"32","CategoryId":"53","ItemId":"0"}]"; string[] processString = budget.BudgetTagNet(jsonString);</pre><p> 现在“budget.BudgetTagNet(jsonString)”返回前面提到的字符串数组,并且 SOAP 响应显示以下值: <a href="https://i.stack.imgur.com/ms2hp.png" rel="nofollow noreferrer">SOAP 响应结果</a></p><p>现在我想将返回的预算数组转换为 DataTable 以进一步用于我的项目,但我做不到。 实现这一目标的最佳方法是什么。 我尝试过的方法如下所述。</p><pre> string jsonString = CommonEnum.DataTableToJSON(Table); err.Message = "Json String is: " + jsonString; err.Insert(); string[] processString = budget.BudgetTagNet(jsonString); err.Message = "Budget service data is: " + processString[1]; err.Insert(); var XMLAsString = CommonEnum.SerializeXML(processString[1]); err.Message = "Converted XML To String data is: " + JsonConvert.SerializeObject(XMLAsString); err.Insert(); dt = (DataTable) JsonConvert.DeserializeObject(XMLAsString, (typeof(DataTable))); err.Message = "DataTable data: " + JsonConvert.SerializeObject(dt); err.Insert();</pre><p> 最后插入数据库中的数据,如上述方法是:<a href="https://i.stack.imgur.com/zSY2Q.png" rel="nofollow noreferrer">插入的数据库值</a></p></div>

[英]Convert XML <!CDATA to DataTable C#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 C# 中的 XML CDATA 读取 使用c#提取和修改xml的cdata部分 C#:xml CData中的字节数组 转换XML <!--CDATA to DataTable C#</div--><div id="text_translate"><p> 我有 Webservice SOAP 方法,它将 Json 作为输入参数。</p><pre> //For sample string jsonString = "[{"Year":"2020","UserId":"1","Comp":"20","DeptId":"32","CategoryId":"53","ItemId":"0"}]"; string[] processString = budget.BudgetTagNet(jsonString);</pre><p> 现在“budget.BudgetTagNet(jsonString)”返回前面提到的字符串数组,并且 SOAP 响应显示以下值: <a href="https://i.stack.imgur.com/ms2hp.png" rel="nofollow noreferrer">SOAP 响应结果</a></p><p>现在我想将返回的预算数组转换为 DataTable 以进一步用于我的项目,但我做不到。 实现这一目标的最佳方法是什么。 我尝试过的方法如下所述。</p><pre> string jsonString = CommonEnum.DataTableToJSON(Table); err.Message = "Json String is: " + jsonString; err.Insert(); string[] processString = budget.BudgetTagNet(jsonString); err.Message = "Budget service data is: " + processString[1]; err.Insert(); var XMLAsString = CommonEnum.SerializeXML(processString[1]); err.Message = "Converted XML To String data is: " + JsonConvert.SerializeObject(XMLAsString); err.Insert(); dt = (DataTable) JsonConvert.DeserializeObject(XMLAsString, (typeof(DataTable))); err.Message = "DataTable data: " + JsonConvert.SerializeObject(dt); err.Insert();</pre><p> 最后插入数据库中的数据,如上述方法是:<a href="https://i.stack.imgur.com/zSY2Q.png" rel="nofollow noreferrer">插入的数据库值</a></p></div> 如何在 C# 中使用 XmlReader 读取 CDATA? 如何在 C# 中编写包含内部节点的 XML 的 CData? 在Windows 8 Phone应用程序中的C#中解析XML CDATA 使用CData节包装属性-XML序列化C# C#在xml文件的CDATA中获取节点 在C#中解析具有cData的xml响应文本
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM