从xml代码段中删除html标记?

时间:2014-02-25 23:48:42

标签: c# html xml

我希望从下面的代码段中删除HTML标记。这是一个示例,XML文件架构可以更改,XML也可以更改,而不是静态的。 我想保留XML节点 有没有办法自动执行此操作,而无需使用外部库/工具/等?

<house>
  <welcome>This is a <b>great</b> house.</welcome>
</house>

2 个答案:

答案 0 :(得分:0)

我建议

string yourXml = ".....";
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(yourXml);
string yourXmlWithoutTags = xmlDoc.InnerText;
string someContentWithoutTags = xmlDoc.SelectSingleNode("root/house").InnerText;

等...

答案 1 :(得分:0)

虽然我提倡将HTML Agility Pack用于HTML,但根据您的示例,XDocument会毫无问题地提取HTML。

  var xmlString = @"<house>
                      <welcome>This is a <b>great</b> house.</welcome>
                    </house>";
  var xml = XDocument.Parse(xmlString);
  var welcome = xml.Descendants("house").Elements("welcome").First().Value;
  Console.Write(welcome);
  //This is a great house.

这可能是因为Parse发生时,<b>标记被删除。 Load不会这样做。

HTML敏捷包方法看起来像这样:

public string StripTags(string input) {
    var doc = new HtmlDocument();
    doc.LoadHtml(input ?? "");
    return doc.DocumentNode.InnerText;
}