2013-01-10 58 views
0

我有一個包含大量垃圾數據的文件,我想從中提取一些正確的格式化XML。從非xml格式中提取xml數據

我想提取的位是這樣的:

<random stuff....;'/> 
<GET_FW_VERSION 
    FIRMWARE_VERSION = "1.77" 
    FIRMWARE_DATE = "Apr 23 2009" 
    MANAGEMENT_PROCESSOR = "iLO2" 
    LICENSE_TYPE = "iLO 2 Advanced" 
    /> 
more non xml stuff 

所以我只想取出<GET_FW_VERSION>

我用來做這個,像這樣:

string FW_VERSION = Regex.Match(result, "<GET_FW_VERSION>.*</GET_FW_VERSION>", RegexOptions.Singleline).ToString(); 

但這不結束於</GET_FW_VERSION>

有沒有另一種方法來wr迭代那個正則表達式?

回答

0

只要沒有任何屬性值包含序列「/>」,這應該工作。

string FW_VERSION = Regex.Match(result, 
    "<GET_FW_VERSION.*/>|<GET_FW_VERSION.*>.*</GET_FW_VERSION>", 
    RegexOptions.Singleline).ToString(); 
0

注意.在正則表達式的意思是:

. 通配符:匹配除\n

嘗試任何單個字符使用這個表達式:

(?:<GET_FW_VERSION[^>]*>|<GET_FW_VERSION[^>]*>.*</GET_FW_VERSION>) 

交代:

| 匹配由豎線|字符分隔的任何一種元素。

[^character_group] 否定:匹配任何單個字符,是不是在character_group

(?:subexpression) 定義非捕獲基團。

+0

當使用'RegexOptions.SingleLine'時,'.'也匹配'\ n'。 – JLRishe