如何将子元素作为解码字符串添加到 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() = "&lt;Parent&gt;&amp;lt;Son&amp;gt;5&amp;lt;/Son&amp;gt;&lt;/Parent&gt;",这显然是对标签内容进行编码。

我有一个带有标签的大常量字符串,我需要将其添加到 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。 举一个你的字符串/数组的例子,以便我们有一些工作。 如果你有一个字符串标签列表/数组,我调整了可能对你有用的答案。 想象像“40...345 ...3Tag>这样的字符串........" 具有不同的继承级别 我只有一个带有元素的字符串,而不是元素。【参考方案2】:

你可以做一个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 中获取名称(带前缀)作为字符串?

如何使用自动布局(约束)将子视图添加到 UIPageViewController?

如何将子视图添加到 TableViewCell?

将部分 XML 字符串解析为 XElement 列表

VB.NET 如何将子节点添加到树视图中的特定节点

XElement 会自动将 xmlns="" 添加到自身