这是我想分析如何使用xmlreader解析此文档?
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">report_id</key>
<value xsi:type="xsd:string">2467</value>
</item>
<item>
<key xsi:type="xsd:string">vendor_hi</key>
<value xsi:type="xsd:string">01.01</value>
</item>
<item>
<key xsi:type="xsd:string">area_nm</key>
<value xsi:type="xsd:string">MALAYSIA MOBILE DIGI</value>
</item>
</item>
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">report_id</key>
<value xsi:type="xsd:string">2467</value>
</item>
<item>
<key xsi:type="xsd:string">vendor_hi</key>
<value xsi:type="xsd:string">01.07</value>
</item>
<item>
<key xsi:type="xsd:string">area_nm</key>
<value xsi:type="xsd:string">MALAYSIA MOBILE MAXIS</value>
</item>
</item>
以上
文档只是相隔整个文档的,全部项目的大约是1/3000秒,如果我用这样的代码来解析
using (WebResponse response = request.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
XDocument xd = XDocument.Load(rd.BaseStream);
当它执行这条线
XDocument xd = XDocument.Load(rd.BaseStream);
速度太慢,所以我想用的XMLReader解析,我的目的是:第一循环的
所有节点<item xsi:type="ns2:Map">
和定义三个变量,说他们是
string strRptID;
string strVendor;
string strArea;
然后,循环每个子节点“项目”,看它是否有子节点名称是“关键”
是否存在和“密钥”的值是‘REPORT_ID’,然后设定strRptID相等的子节点‘值’的值
在第一项的情况下,2467
如果存在和“密钥”的值是‘vendor_hi’,然后设定strVendor相等的子节点‘值’的值
在这种情况下是01.01。
如果存在和“密钥”的值是‘area_nm’,然后设定strArea等于子节点的‘价值’的在第一个项目的情况下的值
是马来西亚MOBILE MAXIS。
然后循环另一
,做同样的。
请帮忙告诉我如何做到这一点使用的XMLReader。
PS:
using (WebResponse response = request.GetResponse())
{
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
XDocument xd = XDocument.Load(rd.BaseStream); //breakpoint this line
赫拉请求是HttpWebRequest的,我在
XDocument xd = XDocument.Load(rd.BaseStream);
添加断点时,执行到那里,它不返回了将近5分钟,我不知道在那个时候,无论是
下载完成?我认为下载是发生在
request.GetResponse()
如果我错了,请纠正我。
你是什么意思“太慢”,你为什么认为XmlReader会更快完成?你确定这不是你正在测量的下载延迟?从本地文件加载时是否会遇到延迟? –
你试过了什么(使用'XmlReader')?另外:你是否使用'XmlSerializer'进行了简介,将其引入一个简单的对象模型中,该模型公开'key' /'value'对并从那里解析?您是否使用'XElement'进行了分析? ('XmlReader'是...很难得到100%的权利;几乎任何东西都会比直接使用更好) –
为什么我说xdocument很慢,请参阅我的编辑 – yangl