我有一个应用程序的相当大的 XML 输出。我需要用我的程序对其进行处理,然后将其反馈给原始程序。此 XML 中有几部分需要填写我们替换。有趣的部分如下所示:
<sys:customtag sys:sid="1" sys:type="Processtart" />
<sys:tag>value</sys:tag>
here are some other tags
<sys:tag>value</sys.tag>
<sys:customtag sys:sid="1" sys:type="Procesend" />
并且该文件包含几个这样的部分。
我需要获取这些标签中的所有 XML 片段才能对其进行修改。我写了一个正则表达式来获取这些部分,但它不起作用:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"output.xml");
Regex regExp = new Regex(@"<sys:customtag(.*?)Processtart(.*?)/>(.*?)<sys:customtag (.*?)Procesend(.*?)/>", RegexOptions.Multiline & RegexOptions.IgnorePatternWhitespace & RegexOptions.CultureInvariant);
MatchCollection matches = regExp.Matches(xmlDoc.InnerXml);
如果我将所有内容放在一行中并在没有多行选项的情况下调用此正则表达式,它确实会找到每一个出现。通过保持文件原样并设置多行选项,它不起作用。有什么问题,我应该改变什么?或者有没有更简单的方法可以在没有正则表达式的情况下获取这些标签之间的 XML 部分?