如何将子元素作为解码字符串添加到XElement中?

4

我想通过这个测试。除了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 - 只需添加解码后的字符串而不是在添加后解码整个结果。

谢谢!

2个回答

10

请尝试一下,

var element = new XElement("Parent");
foreach(string xml in list)
    element.Add(XElement.Parse(xml));

你可能还想在 Assert 中添加...

Assert.IsTrue(element.ToString(SaveOptions.DisableFormatting) == ...

:) 很明显,我不想使用这种方法,因为我需要添加大量的常量标签(约100个),而且我也不想为它们创建XElement。 - Dmitry Khryukin
给出您字符串/数组的示例,以便我们有些东西可以操作。 - Chuck Savage
如果你有一个字符串标签的列表/数组,我调整了我的答案,可能适用于你。 - Chuck Savage
想象一个字符串,类似于“<Tag1/><Tag2>40</Tag2><Tag3><Tag4>...<Son56>345</Son56>...<Tag4></Tag4>....<Tag100>....</Tag100>”,其中包含不同层次的继承。 - Dmitry Khryukin
我只有一个字符串,没有元素。 - Dmitry Khryukin
显示剩余2条评论

2
你可以使用 XElement.Parse,然后像这样添加内容:
var element = new XElement("Parent");

element.Add(XElement.Parse("<Sone>5</Sone>"));

Console.WriteLine(element.ToString(SaveOptions.DisableFormatting));

这将为您提供所需的输出结果。

解析(Parse)是否比解码(Decode)结果更好? - Dmitry Khryukin
@ChuckSavage 在问题中添加子标签,然后解码结果 - HttpUtility.HtmlDecode(element.ToString())。 - Dmitry Khryukin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接