将字符串中的 xml 标记替换为控件

本文关键字:替换 控件 xml 字符串 | 更新日期: 2023-09-27 18:32:56

我有一个字符串,可能看起来像这样:

"Sandra <as type="1">walked</as> in the park, and met a <as type="3">random</a> stranger".

基于这些 xml 标签,我想用其他东西(控件列表)替换标签。

例如,当我看到<as type="1">walked</as>时,我想返回一个文字和一个文本框,以便在该句子中替换。

我想最简单的方法是将整个东西添加到占位符中,但我不知道如何进行替换部分。

将字符串中的 xml 标记替换为控件

您目前没有有效的 XML,因此作为第一步,我建议您用一些基本标记将其括起来,例如:

var start = "Sandra <as type='"1'">walked</as> in the park, and met a <as type='"3'">random</as> stranger";
var startAsXml = "<root>" + start + "</root>";

现在我们可以解析它了:

var doc = XElement.Parse(startAsXml);

现在,我们在此 XML 中有两种类型的节点 - 文本和元素。您可以轻松地循环使用任意数量的方式并提取它们,更改它们,做您喜欢的事情。下面是一个示例:

foreach (var node in doc.Nodes()) 
{
    if (node.NodeType == XmlNodeType.Text) Console.WriteLine("Text: {0}", node.ToString().Trim());
    else if (node.NodeType == XmlNodeType.Element) 
    {
        var element = (XElement)node;
        Console.WriteLine("Element: Name={0} Type={1} Value={2}",
                          element.Name, element.Attribute("type").Value, element.Value);
    }
}

这将打印:

Text: Sandra 
Element: Name=as Type=1 Value=walked
Text:  in the park, and met a 
Element: Name=as Type=3 Value=random
Text:  stranger