正则表达-匹配xml
1、xml字符串,包括换行、空格等等
<?xml version="1.0" encoding="UTF-8"?> <bocb2e version="120" locale="zh_CN"> <head> <termid>E059151012181</termid> <trnid>170420180606</trnid> <custid>133811631</custid> <cusopr>136138299</cusopr> <trncod>b2e0077</trncod> </head> <trans> <trn-b2e0077-rs> <status> <rspcod>1033</rspcod> <rspmsg>前置机未向服务器签到[null]</rspmsg> </status> </trn-b2e0077-rs> </trans> </bocb2e>
2、Regex正则:
(\\s|\\n)*表示多个空白符、换行,匹配中间的所有(.|\\s|\n)*除换行符的任意字符、空白符和换行符
string result = req.Exec(); //Regex regexStatus = new Regex("<status>(?<st>[^<\\/status>]?)", RegexOptions.IgnoreCase | RegexOptions.Multiline); Regex regexStatus = new Regex("<trn-b2e0077-rs>(\\s|\\n)*(?<st><status>(.|\\s|\n)*</status>)(\\s|\n)*</trn-b2e0077-rs>", RegexOptions.IgnoreCase | RegexOptions.Multiline); //Regex regexStatus = new Regex("<trn-b2e0077-rs>(\\s|\\n)*<status>(?<st>(.|\\s|\n)*)</status>(\\s|\n)*</trn-b2e0077-rs>", RegexOptions.IgnoreCase | RegexOptions.Multiline); if (regexStatus.IsMatch(result)) { MatchCollection matchs = regexStatus.Matches(result); foreach (Match match in matchs) { string status = match.Groups["st"].ToString().Replace(" ", ""); XmlDocument doc = new XmlDocument(); doc.LoadXml(status); string json= Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);//KLB.Common.Serializer.ConvertXmlToObject<AccountBillRS>(result); //Type t = typeof(StatusCode); //var entity = Activator.CreateInstance(t); var obj= Newtonsoft.Json.JsonConvert.DeserializeObject<AccountBillRS>(json);//KLB.Common.Serializer.ConvertXmlToObject<AccountBillRS>(result); } }
3、匹配得到的结果
<status> <rspcod>1033</rspcod> <rspmsg>前置机未向服务器签到[null]</rspmsg> </status>
4、类
public class BOCB2ERS { public StatusCode status { get; set; } } public class StatusCode { public string rspcod { get; set; } public string rspmsg { get; set; } } [XmlRoot("trnb2e0077-rs")] [Serializable] public class AccountBillRS:BOCB2ERS { /// <summary> /// 总笔数 /// </summary> //public int totalnum { get; set; } //[XmlElement("b2e0077-rs")] //public AccountBillRSBody AccountBillBody { get; set; } }

浙公网安备 33010602011771号