我希望从下面的代码段中删除HTML标记。这是一个示例,XML文件架构可以更改,XML也可以更改,而不是静态的。 我想保留XML节点 有没有办法自动执行此操作,而无需使用外部库/工具/等?
<house>
<welcome>This is a <b>great</b> house.</welcome>
</house>
答案 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;
}