这是我要解析的文档
<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>
以上只是整个文档的一部分,项目总数约为 3000s,如果我使用这样的代码来解析
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;
然后,循环每个子节点“item”,看看它是否有一个子节点名称是“key”
如果存在且 "key" 的值为 "report_id",则设置 strRptID 等于子节点 "value" 的值
在第一项的情况下是 2467
如果存在且 "key" 的值为 "vendor_hi",则设置 strVendor 等于子节点 "value" 的值
在这种情况下是 01.01。
如果存在且 "key" 的值为 "area_nm",则设置 strArea 等于子节点 "value" 的值
第一项的情况是 MALAYSIA 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
hera 请求是一个 HttpWebRequest ,我在
XDocument xd = XDocument.Load(rd.BaseStream);
当执行到那里时,它几乎没有返回 5 分钟,我当时不确定,是否
下载完成了吗?我认为下载发生在
request.GetResponse()
如果我错了,请纠正我。