需要删除字符串中的xml节点并保留文本

时间:2009-09-29 12:03:23

标签: c# xml

我有一个字符串,它是xml的一部分。

a<b>b</b>c<i>d</i>e<b>f</b>g

问题是我想从字符串中提取不在任何标签内的部分。 所以我需要从这个字符串中提取字符串“aceg”并保留字符“bdf” 怎么办呢?

编辑: 这是xml的一部分 让它为

<div>a<b>b</b>c<i>d</i>e<b>f</b>g</div>

现在它是一个有效的xml:)

3 个答案:

答案 0 :(得分:5)

以下正则表达式将从字符串中删除所有标记:

Regex.Replace("a<b>b</b>c<i>d</i>e<b>f</b>g", "<[^>]+>", string.Empty);

答案 1 :(得分:4)

该字符串不是有效的XML。

但是,假设您有一个有效的XML字符串,那么您可以这样做:

class Program
{
    static void Main(string[] args)
    {
        string contents = string.Empty;

        XmlDocument document = new XmlDocument();
        document.LoadXml("<outer>a<b>b</b>c<i>d</i>e<b>f</b>g</outer>");

        foreach(XmlNode child in document.DocumentElement.ChildNodes)
        {
            if (child.NodeType == XmlNodeType.Element)
            {
                contents += child.InnerText;
            }
        }

        Console.WriteLine(contents);

        Console.ReadKey();
    }
}

这将打印出字符串“bdf”

答案 2 :(得分:0)

根据@ Stoo的回答,您应该能够省略标签内容以及类似的内容:

Regex.Replace("a<b>b</b>c<i>d</i>e<b>f</b>g", "<[^>]+>[^<]+</[^>]+>", string.Empty);