gpt4 book ai didi

c# - 在C#中处理大型CDATA部分

转载 作者:行者123 更新时间:2023-12-03 17:14:08 27 4
gpt4 key购买 nike

我正在尝试从xml文档中检索cdata部分,xml的格式如下:

<Configuration>
<ConfigItem>
<Key>Hello World</Key>
<Value><![CDATA[For the value we have a large chunk of XAML stored in a CDATA section]]></Value>
</ConfigItem>
</Configuration>


我想做的是从CDATA部分检索XAML,到目前为止,我的代码如下:

XmlDocument document = new XmlDocument();
document.Load("Configuration.xml");

XmlCDataSection cDataNode = (XmlCDataSection) document.SelectSingleNode("//*[local-name()='Value']").ChildNodes[0];

String cdata = cDataNode.Data;


但是,我猜cdata字符串已被截断并且不完整,因为实际的cdata太大而无法容纳在字符串对象中。

什么是正确的方法?

编辑:

因此,我最初的假设是字符串太长是不正确的。现在的问题是我的CDATA包含一个嵌套的CDATA。在线阅读看来,转义嵌套cdata的正确方法是使用xml所使用的 ]]]]><![CDATA[>,但是似乎当我选择该节点时,它会转义到错误的位置。

最佳答案

当有嵌套的CDATA部分时,您需要做的就是将数据重新组合在一起。目前,您只是选择ChildNodes[0]而忽略所有其他子级。您可能会发现,ChildNodes[1]包含一些纯文本,然后ChildNodes[2]包含另一个CDATA部分,依此类推。

您需要提取所有这些内容,从CData部分中提取数据,并将它们全部串联在一起,以获取Value元素的有效“文本”内容。

关于c# - 在C#中处理大型CDATA部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25078945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com