2

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

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

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

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

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

4

1 回答 1

1

您当前没有有效的 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
于 2012-05-02T07:01:10.013 回答