代码之家  ›  专栏  ›  技术社区  ›  Younes

从nodelist c#.net获取nodelist

  •  3
  • Younes  · 技术社区  · 14 年前

    下面的代码为我提供了一个节点列表:

    XPathNavigator thisNavigator = thisXmlDoc.CreateNavigator();
    XPathNodeIterator dossierNodes = thisNavigator.Select("changedthisname/dossiers/dossier");
    

    我正在处理这个节点列表,需要从列表中获取另一个节点列表。

    XPathNavigator alineanodesNavigator = dossierNodes.Current;
    XPathNodeIterator alineaNodes = alineanodesNavigator.Select("/dossier/alineas/alinea");
    

    文档结构如下:

    alt text

    我调试了一下,结果是:

    alt text

        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);
        string xml = reader.ReadToEnd();
        XmlDocument thisXmlDoc = new XmlDocument();
        thisXmlDoc.LoadXml(xml);
    
        XPathNavigator thisNavigator = thisXmlDoc.CreateNavigator();
    
    5 回复  |  直到 14 年前
        1
  •  3
  •   user357812 user357812    14 年前

    正确的完整路径是

    changedthisname/dossiers/dossier/alineas/alinea
    

    所以,如果你选择 changedthisname/dossiers/dossier 首先,相对路径是:

    alineas/alinea
    
        2
  •  2
  •   Josh    14 年前

    档案 因此,当您在XPath查询的开头输入“/”时 “从父节点” 档案 此时的节点。将XPath查询更改为:

    编辑:

    看到你的作品后,我意识到我的错误。您应该从原始查询中删除前导正斜杠。

    “档案/alineas/alinea”

    这样就可以了。

        3
  •  0
  •   Younes    14 年前

    与使用xpath获取alinea不同,我只使用节点导航器上的SelectDescendants,如下所示:

                XPathNavigator alineanodesNavigator = dossierNodes.Current;
                XPathNodeIterator alineaNodes = alineanodesNavigator.SelectDescendants("alinea", "", false);
    
    
                List<Alinea> thisAlineaList = new List<Alinea>();
    
        4
  •  0
  •   louisgab    14 年前

    Select() ,使用以下XPath表达式: "//alinea" .

            XPathNavigator thisNavigator = doc.CreateNavigator();
            XPathNodeIterator dossierNodes = thisNavigator.Select("//dossier");
            while (dossierNodes.MoveNext())
            {
                XPathNavigator alineanodesNavigator = dossierNodes.Current;
                XPathNodeIterator alineaNodes = alineanodesNavigator.Select("//alinea");
    
                while (alineaNodes.MoveNext())
                {
    
                }
            }
    
        5
  •  -1
  •   Christopher B. Adkins    14 年前

    var alineaNodes = from alinea in XDocument.Load(alldata.xml).Descendents("alinea")
                      select alinea;
    

    返回一个包含所有数据.xml. 希望这有帮助。仔细看看Linq,它对这些东西很有帮助。