如何将子元素作为解码字符串添加到 XElement?
Posted
技术标签:
【中文标题】如何将子元素作为解码字符串添加到 XElement?【英文标题】:How to add child element to XElement as a decoded string? 【发布时间】:2012-07-15 20:39:17 【问题描述】:我想通过这个测试。我应该使用什么来代替 Add 方法?
[TestMethod]
public void AddContentWithoutEncoding()
var element = new XElement("Parent");
element.Add("<Son>5</Son>");
Assert.IsTrue(element.ToString() == "<Parent><Son>5</Son></Parent>");
使用当前的方法element.ToString() = "<Parent>&lt;Son&gt;5&lt;/Son&gt;</Parent>"
,这显然是对标签内容进行编码。
我有一个带有标签的大常量字符串,我需要将其添加到 XElement(因为我更频繁地使用它)。并且想要使用比HttpUtility.htmlDecode
更聪明的解决方案 - 只需添加解码后的字符串,而不是在添加后解码整个结果。
谢谢!
【问题讨论】:
【参考方案1】:试试,
var element = new XElement("Parent");
foreach(string xml in list)
element.Add(XElement.Parse(xml));
您可能还想在您的 Assert 中...
Assert.IsTrue(element.ToString(SaveOptions.DisableFormatting) == ...
【讨论】:
:) 很明显。我不想使用这种方法,因为我需要添加大量常量标签(~100)并且我不想为所有这些标签创建 XElement。 举一个你的字符串/数组的例子,以便我们有一些工作。 如果你有一个字符串标签列表/数组,我调整了可能对你有用的答案。 想象像“你可以做一个XElement.Parse
,然后像这样添加:
var element = new XElement("Parent");
element.Add(XElement.Parse("<Sone>5</Sone>"));
Console.WriteLine(element.ToString(SaveOptions.DisableFormatting));
这给了我你正在寻找的输出。
【讨论】:
Parse 是否比解码结果更好? @ChuckSavage 在问题中添加子标签,然后解码结果 - HttpUtility.HtmlDecode(element.ToString())以上是关于如何将子元素作为解码字符串添加到 XElement?的主要内容,如果未能解决你的问题,请参考以下文章
C#:如何从 XElement 中获取名称(带前缀)作为字符串?