使用正则表达式查找和替换xml文档中的文本

本文关键字:文档 文本 xml 替换 正则表达式 查找 | 更新日期: 2023-09-27 18:29:29

我正在使用c#控制台应用程序来获取xml文档。现在,一旦xmldocument被加载,我想搜索特定的href标记:

href="/abc/def

在xml文档中。

一旦找到那个节点,我想完全去掉标签,只显示Hello。

<a href="/abc/def">Hello</a>

我想我可以简单地使用regex获取标签。但是有人能告诉我如何使用regex完全删除href标记吗?

使用正则表达式查找和替换xml文档中的文本

xml&html相同的区别:标记的内容。xml的格式更严格。对于这个用例,我将使用转换和xpath查询来重建文档。正如@Yahia所说,标记文档上的regex通常是个坏主意。用于解析的正则表达式过于复杂,无法作为通用解决方案发挥作用。

类似任务中最流行的技术叫做XPath。(它也是XQuery和XSLT的一个关键组件。)以下内容可能也能解决您的任务吗?
root.SelectSingleNode("//a[@href='/abc/def']").InnerText = "Hello";

您可以尝试

string x = @"<?xml version='1.0'?> 
 <EXAMPLE>  
    <a href='/abc/def'>Hello</a> 
 </EXAMPLE>";
 System.Xml.XmlDocument doc = new XmlDocument();
 doc.LoadXml(x);
 XmlNode n = doc.SelectSingleNode("//a[@href='/abc/def']");
 XmlNode p = n.ParentNode;
 p.RemoveChild(n);
 System.Xml.XmlNode newNode = doc.CreateNode("element", "a", "");
 newNode.InnerXml = "Hello";
 p.AppendChild(newNode);

不确定这是否是你们想要做的,但这应该足以让你们朝着正确的方向前进。