2

私はSharePointWebサービスによって返されたそのようなXML構造を持っています。

<rs:data ItemCount="4" xmlns:rs="urn:company:rowset">
  <z:row ows_AssetId="HP010336520"  />
  <z:row ows_AssetId="HP010336519"  />
  <z:row ows_AssetId="HP010354403"  />
  <z:row ows_AssetId="HP010357062"  />
</rs:data>

    private static void Parser(List<XmlNode> data)
    {

        List<XmlNodeList> rows = (from row in data.AsEnumerable()
                            select row.SelectNodes("data/row")).ToList();
    }                               

行をクエリしようとしましたが、うまくいきませんでした。助けてくれませんか?

4

2 に答える 2

4

ノードリストを照会するときは、XmlNamespaceManagerを使用する必要があります。コードに表示されていないのは、ドキュメントのルートにある「z」名前空間の宣言です:xmlns:z = "#RowsetSchema"。

パーサーメソッドで次のことを試してください。

    NameTable nameTable = new NameTable();
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(nameTable);
    nsmgr.AddNamespace("z", "#RowsetSchema");

    List<XmlNodeList> rows = (from row in data.AsEnumerable()
                              select row.SelectNodes("//z:row", nsmgr)).ToList();
于 2012-07-02T14:51:59.383 に答える
1

私は今テストできる場所にいませんが、問題の少なくとも一部は、クエリでの名前空間の省略にあると思います。「data / row」ではなく、「rs:data / z:row」を試してください。 "。

于 2012-07-02T14:48:39.760 に答える