【发布时间】:2026-02-15 13:00:02
【问题描述】:
我有以下代码:
XDocument doc = XDocument.Load(file);
var x = doc.Descendants("span");
XElement xelm = x.FirstOrDefault(xm => xm.Attribute("class").Value=="screenitems");
Regex rgx = new Regex("^<span class=\"screenitems\">(.*)</span>$");
Match mtc = rgx.Match(xelm.Value);
if (mtc.Success)
{
xelm.ReplaceWith(mtc.Groups[1].Value);
}
doc.Save(file);
当我使用XElement 变量ReplaceWith 的ReplaceWith 方法获得匹配并替换加载到变量doc 中的XML 文件的内容时,XML 文件的内容正在被编码,所以改为有一个像<p> 这样的标签我得到&lt;p&gt。
那么如何防止它编码为 html 但实际上替换为匹配的正则表达式?
我在这里查看了一些解决方案,例如使用XElement.Parse 方法或HTTPUtility.HtmlDecode,但我无法让它工作。它仍然像 html 一样编码。
【问题讨论】:
-
您能否举例说明您要实现的目标的输入和输出?从表面上看,您所做的事情似乎很奇怪且不明智。
XElement已经为您解析了文档,因此使用Regex解析它是非常不寻常的。无论您想做什么,都必须有更好的方法。
标签: c# html regex xml linq-to-xml