2012-01-30 60 views
-1

我有一個XML文件,它看起來像這樣:正則表達式的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 2012-01-30 19:03:09

+0

使用正則表達式不是解析XML的好方法。他們在這方面有很多問題。我強烈建議你使用XPath – Gaim 2012-01-30 19:05:23

+0

使用C#。使用xml解析的問題是我試圖解析的文件可能包含無效的xml。 – 2012-01-30 21:27:15

回答

3

Don't use a regex to parse XML. Just don't do it.這正是XPath被做的事情。我會提供一個XPath表達式,但我不完全確定你想要匹配什麼。

+0

可能類似於'/ e1/e2 [e3 ='contentx']' – 2012-01-30 19:08:23

+0

你說得對,使用XPath可能會更容易。我試圖使用正則表達式的原因是我在這裏處理的字符串實際上是html,它可能並不總是有效的xml。我在C#中編寫任何建議? – 2012-01-30 21:24:03

+0

@ MayadAL-Saidi - 看看這個問題:http://stackoverflow.com/questions/56107/what-is-the-best-way-to-parse-html-in-c – 2012-01-30 22:51:45