从 xml 片段中删除 html 标签? [复制]
Posted
技术标签:
【中文标题】从 xml 片段中删除 html 标签? [复制]【英文标题】:Removing html tags from an xml snippet? [duplicate] 【发布时间】:2014-03-28 12:52:25 【问题描述】:我希望从下面的 sn-p 中去除 html 标签。这是一个示例,XML 文件架构可以更改,XML 也可以更改,并且不是静态的。 我想保留 XML 节点 有没有办法在不使用外部库/工具/等的情况下自动执行此操作?
<house>
<welcome>This is a <b>great</b> house.</welcome>
</house>
【问题讨论】:
这似乎涉及使用Replace
和一长串HTML
标签。
@MartinParkin 这就是我的想法……但想知道绝对没有其他办法。谢谢
这一次又一次出现。使用 XDocument 解析您的 XML,然后将 HTML 视为 HTML 并使用 HTML Agility Pack。
@paqogomez 该问题明确指出不使用外部库/工具/等。 HTML Agility Pack 是一个外部库。
谢谢@paqogomez 我宁愿在没有任何外部库/工具的情况下这样做。我会保持打开状态,看看是否还有其他选择
【参考方案1】:
我建议
string yourXml = ".....";
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml(yourXml);
string yourXmlWithoutTags = xmlDoc.InnerText;
string someContentWithoutTags = xmlDoc.SelectSingleNode("root/house").InnerText;
等等……
【讨论】:
不幸的是 xml 不是 stactic 并且可以具有与上面提到的不同的结构,所以这个解决方案不起作用【参考方案2】:虽然我提倡对 HTML 使用 HTML Agility Pack,但根据您的示例,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;
【讨论】:
解析有点意思。让我探索一下这个选项。以上是关于从 xml 片段中删除 html 标签? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法从 JavaScript 中的字符串中删除 html 标签? [复制]