从非xml格式中提取xml数据

时间:2013-01-10 02:01:29

标签: xml regex

我有一个包含大量垃圾数据的文件,我想从中提取一些正确格式化的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>

结尾

还有其他方法可以编写该正则表达式吗?

2 个答案:

答案 0 :(得分:0)

只要没有属性值包含序列“/&gt;”,这就应该有效。

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

答案 1 :(得分:0)

请注意,正则表达式中的.表示:

  

. 的   通配符:匹配除\n

之外的任何单个字符

尝试使用此正则表达式:

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

的解释:

  

<强> |   匹配由竖线|字符分隔的任何一个元素。

     

[^character_group] 的   否定:匹配character_group以内的任何单个字符。

     

(?:subexpression) 的   定义一个非捕获组。