gpt4 book ai didi

c# - 如何从 xelement 中提取 cdata 的值?

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:51 24 4
gpt4 key购买 nike

我有以下 XML

<?xml version="1.0"?>
<DisplayViewHtml>
<embeddedHTML>&lt;![CDATA[&lt;html&gt;&lt;body&gt;&lt;div&gt;Hello World&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;]]&gt;</embeddedHTML>
<executive>Madan Mishra</executive>
<imgSRC>/executive/2.jpg</imgSRC>
</DisplayViewHtml>

在 C# 代码中,试图在没有 CDATA 的情况下提取 embeddedHTML 的值。
我的 C# 代码如下,

XElement displayViewHtml=null;
XmlReader reader = XmlReader.Create(new StringReader(e.Result));
displayViewHtml = XElement.Load(reader);
IEnumerable<XElement> settings = from item in displayViewHtml.Elements() select item;
foreach (XElement setting in settings)
{
switch (setting.Name.ToString())
{
case "embeddedHTML":
counterViewHtml = setting.Value;
break;
case "executive":
executive = setting.Value;
break;
case "imgSRC":
imgSRC = setting.Value;
break;
default:
//log
break;
}
}

从上面的代码中,我能够提取embeddedHTMLexecutiveimgSRC 的值,但是embeddedHTML

<![CDATA[<html><body><div>Hello World</div></body></html>]]>

但是我想要

<html><body><div>Hello World</div></body></html>

请不要建议使用.Replace 方法

最佳答案

正如@CamBruce 所建议的那样,问题是您的 xml 文件在不应该的地方编码了字符。理想的解决方案是修复生成 xml 文件的程序。不管怎样,如果你出于某种原因希望在这里有一个变通办法,这种方式就可以了:

.....
case "embeddedHTML":
var element = XElement.Parse("<embeddedHtml>" +
setting.Value +
"</embeddedHtml>");
counterViewHtml = element.Value;
break;
.....

上面的代码告诉程序通过解析已经未转义的字符串来创建新的 XElement(它是变量 element)。因此,新创建的 XElement 的值将包含您想要的字符串:

<html><body><div>Hello World</div></body></html>

关于c# - 如何从 xelement 中提取 cdata 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21473220/

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