从 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 出现时,&lt;b&gt; 标记被删除。 Load 不会这样。

HTML 敏捷包方法如下所示:

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

【讨论】:

解析有点意思。让我探索一下这个选项。

以上是关于从 xml 片段中删除 html 标签? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 从 html 中删除自定义 xml 标签

有没有办法从 JavaScript 中的字符串中删除 html 标签? [复制]

使用 Python 和 Regex,如何从 html 中删除 <sup> 标签? [复制]

从 xml 文件中删除标签

XSLT 转换从混合内容中删除 HTML 元素

如何在python中删除html标签中的文本? [复制]