2012-01-30 3 views
-1

У меня есть файл XML, который выглядит следующим образом:Regex XML соответствие

... 
<e1> 
    <e2> 
     <e3>content1.1</e3> 
     <e3>content1.2</e3> 
     ... 
     <e3>content1.n</e3> 
    </e2> 
    <e2> 
     <e3>content2.1</e3> 
     <e3>content2.2</e3> 
     ... 
     <e3>content2.n</e3> 
    </e2> 
    ... 
</e1> 
... 

Мне нужно регулярное выражение, которое дал XML-строку (связка e1 элементов), будет соответствовать все e2 элементы, которые имеют ребенка e3 элемент с контентом contentx. Другими словами, регулярное выражение будет соответствовать всем e2 элементам (может иметь разных родителей e1), где каждый из этих элементов имеет хотя бы один e3 ребенок, который содержит contentx.

+5

Вы должны использовать библиотеку XML-синтаксического анализа. На каком языке вы кодируете? – 0605002

+0

Использование регулярных выражений не является хорошим подходом для синтаксического анализа XML. В этом контексте у них много проблем. Я настоятельно рекомендую вам использовать XPath – Gaim

+0

Использование C#. Проблема с использованием синтаксического анализа xml заключается в том, что файл, который я пытаюсь выполнить, может содержать недопустимый xml. –

ответ

3

Don't use a regex to parse XML. Just don't do it. Это именно то, что было сделано, чтобы сделать XPath. Я бы предложил выражение XPath, но я не совсем уверен, что вы пытаетесь сопоставить.

+0

Возможно, что-то вроде '/ e1/e2 [e3 = 'contentx']' –

+0

Вы правы, использование XPath, вероятно, будет проще. Причина, по которой я пытаюсь использовать регулярное выражение, заключается в том, что строка, с которой я имею дело, - это html, который не всегда может быть действительным xml. Я кодирую в C# Любые предложения? –

+0

@ MayadAL-Saidi - Взгляните на этот вопрос: http://stackoverflow.com/questions/56107/what-is-the-best-way-to-parse-html-in-c –

Смежные вопросы