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