2

我有这种由 SharePoint Web 服务返回的 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"。

在您的 Parser 方法中尝试以下操作:

    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

我现在不在一个可以测试的地方,但我相信至少部分问题是您在查询中遗漏了命名空间——而不是“数据/行”,请尝试“rs:data/z:row ”。

于 2012-07-02T14:48:39.760 回答