これは解析したいドキュメントです
<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>
上記はドキュメント全体のほんの一部です。そのようなコードを使用して解析すると、項目の合計は約 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">
そして3つの変数を定義し、それらが
string strRptID;
string strVendor;
string strArea;
次に、すべてのサブノード「アイテム」をループし、サブノード名が「キー」であるかどうかを確認します
が存在し、「キー」の値が「report_id」の場合、strRptID をサブノードの「値」の値に等しく設定します
最初の項目の場合は 2467 です
存在し、「key」の値が「vendor_hi」の場合、strVendor をサブノードの「value」の値と等しく設定します
この場合は 01.01 です。
存在し、「キー」の値が「area_nm」の場合、strArea をサブノードの「値」の値と等しく設定します
最初の項目の場合は 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()
私が間違っている場合は、訂正してください。