【问题标题】:Get ParentNode and ChildNodes from XML with LINQ使用 LINQ 从 XML 获取 ParentNode 和 ChildNode
【发布时间】:2020-11-08 04:39:23
【问题描述】:

我需要以下数据

我需要在一个查询中获取它们,我有以下代码:

    XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.LoadXml(prueba);

                XmlNode itemNodes = xmlDocument.SelectSingleNode("//response//result//doc");
                var itemNodes2 = new List<XmlNode>(itemNodes.Cast<XmlNode>());
                var obtener = itemNodes.ParentNode.Attributes["numFound"].Name;
                var obtener2 = itemNodes.ParentNode.Attributes["numFound"].Value;
                var nodes = (from XmlNode node in itemNodes2
                             select new
                             {
                                 node.Attributes["name"].Value,
                                 node.InnerText

                                 
                             })
                             .Union
                             (from XmlNode node2 in itemNodes
                              select new
                              {
                                  node2.ParentNode.Attributes["numFound"].Name,
                                  node2.ParentNode.Attributes["numFound"].Value
                              }
                              )
                             .ToList();

在第一个“选择”中,我得到了“doc”的所有子节点。 现在我只需要得到numFound 问题是在第二个“选择”中我有以下错误:

“不包含联合的定义”

obtener = "numFound" obtener2" = "1"

【问题讨论】:

    标签: c# xml linq


    【解决方案1】:

    尝试在联合的第一部分命名值,在第二部分中,名称隐含在它们来自的变量中;

            var nodes = (from XmlNode node in itemNodes2
                         select new
                         {
                             Name = node.Attributes["name"].Value,
                             Value = node.InnerText
                         })
                        .Union
                        (from XmlNode node2 in itemNodes
                        select new
                        {
                            node2.ParentNode.Attributes["numFound"].Name,
                            node2.ParentNode.Attributes["numFound"].Value
                        }
                        )
                        .ToList();
    

    编辑

    尝试先获取每个部分并确保它们有效,即

            var part1 = from XmlNode node in itemNodes2
                        select new
                        {
                            Name = node.Attributes["name"].Value,
                            Value = node.InnerText
                        };
            var part2 = from XmlNode node2 in itemNodes
                        select new
                        {
                            node2.ParentNode.Attributes["numFound"].Name,
                            node2.ParentNode.Attributes["numFound"].Value
                        };
    
            var nodes = part1.Union(part2).ToList();
    

    【讨论】:

    • 我按照你说的做了:“对象引用未设置为对象的实例。” System.Xml.XmlAttributeCollection.this[string].get devolvió null。 :(
    • 好的,我的第 2 部分为空,所以,我的查询有错误 mmmmmm
    • 谢谢我的错误是我的查询 2,谢谢!!!!!!!!!!!!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多