在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
解析XML有很多方法,之前用专门写的XMLProcess 或XMLHelper 解析类。其实有个较简单的解析就是用Linq查询。 例如有如下XML <?xml version="1.0" encoding="utf-8" ?> <outArgs> <arg-xml> <scanners> <scanner type="USBIBMHID"> <scannerID>2</scannerID> <modelnumber>DS6708-SR20007ZZR</modelnumber> <serialnumber>1216300503088</serialnumber> <GUID>4D6059D05BEA5745061D7D0B811E7CC</GUID> </scanner> <scanner type="USBIBMHID"> <scannerID>3</scannerID> <modelnumber>DS6708-SR20007ZZR</modelnumber> <serialnumber>2216300503022</serialnumber> <GUID>556059D05BEA5745061D7D0B811E755</GUID> </scanner> <scanner type="SNAPI"> <scannerID>4</scannerID> <modelnumber>DS457-SR001R</modelnumber> <serialnumber>3316300503033</serialnumber> <GUID>666059D05BEA5745061D7D0B811E766</GUID> </scanner> </scanners> <status>1</status> </arg-xml> </outArgs> 1. 查询所有“USBIBMHID”的Scanner的数量。 int number = XElement.Parse(outXml).XPathSelectElements("//scanner[@type = 'USBIBMHID']").Count(); 2. 查询 type 为 “SNAPI"的Scanner的ID。 (即查找结点scanner的子结点scannerID的Inner Text) XDocument xDoc = XDocument.Load("XMLFile1.xml"); var scanners = xDoc.Descendants("scanner").Where(node => node.Attribute("type").Value == "USBIBMHID").FirstOrDefault(); List<string> idValues = new List<string>(); if (scanners != null) { idValues.Add(scanners.Descendants("scannerID").Single().Value); }
实际应用中,使用XML序列化来解析XML并运用的程序中是一个比较方便的方法。 使用XML序列化可以直接把Data 映射到对应的类上,从而在程序中使用。
|
请发表评论