Tôi có một đầu ra XML khá lớn từ một ứng dụng. Tôi cần phải xử lý nó với chương trình của tôi và sau đó đưa nó trở lại chương trình gốc. Có những phần trong XML này cần được điền vào thay thế của chúng tôi. Phần thú vị trông giống như sau:Không thể nhận biểu thức chính quy hoạt động chính xác với nhiều dòng
<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" />
và tài liệu chứa nhiều phần như thế này.
Tôi cần nhận tất cả các phần XML bên trong các thẻ này để có thể sửa đổi trên đó. Tôi đã viết một biểu thức chính quy để có được những mảnh nhưng nó không hoạt động:
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);
Nếu tôi để lại toàn bộ nội dung trong một dòng và gọi regexp này mà không có sự lựa chọn nhiều dòng, nó tìm mọi lần xuất hiện. Bằng cách rời khỏi tập tin như nó và thiết lập tùy chọn đa dòng, nó không hoạt động. Vấn đề là gì, tôi nên thay đổi điều gì? Hoặc là có cách nào dễ dàng hơn để có được các phần XML giữa các thẻ này mà không cần regexp?
Vậy là xong, cảm ơn bạn. Tôi cũng có nghĩa là multiline = multi line mode. – Biri