У меня довольно большой 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 между этими тегами без регулярного выражения?