我有一个字符串,看起来像这样:
"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,因此作为第一步,我建议您使用一些基本标签将其包围,例如:
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