读取具有多个子节点的xml文件只会返回第一个节点

纳菲

我有一个带有命名空间的xml文件,我可以正确读取它。它有一个名为'Items'的外部节点,其中有多个子节点,其中有50个子节点(因此50个子节点称为'ReceiverPoints')。当我检查控制台,它的大小是正确的,即50,但是当我检查打印输出时,所有输出只是第一个ReceiverPoint节点的重复。

我想将每个接收器点保存到数据库中。根据我所看到的所有示例,我的实现看起来不错。但是它给了我错误的结果。有人可以帮我看看我所缺少的是什么吗?这是xml文件

public List<ReceiverPoint> ReadFile()
    {
        receiverList = new List<ReceiverPoint> ();

        Console.WriteLine ("Now in read file method :" + fileLocation);

            xmldoc = new XmlDocument ();
            xmldoc.Load (fileLocation);

        XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager (xmldoc.NameTable);

        //nameSpaceManager.AddNamespace ("ns", "http://schemas.datacontract.org/2004/07/AristotleService.Models");
        nameSpaceManager.AddNamespace ("ns", "http://schemas.datacontract.org/2004/07/GTI.Aristotle.Web.Api.Models");



        XmlElement rootElement = xmldoc.DocumentElement;

        XmlNodeList nodeList = rootElement.SelectNodes("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint", nameSpaceManager);

        ReceiverPoint receiverPoint = new ReceiverPoint ();
foreach(XmlNode childNode in nodeList)
        {
            receiverPoint.CloseDate = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:CloseDate", nameSpaceManager).InnerText;
            receiverPoint.CreateDate = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:CreateDate", nameSpaceManager).InnerText;  
            receiverPoint.CreateWho = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:CreateWho", nameSpaceManager).InnerText;
            receiverPoint.Easting = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:Easting", nameSpaceManager).InnerText;
            receiverPoint.Elevation = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:Elevation", nameSpaceManager).InnerText;
            receiverPoint.IsDeployed = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:IsDeployed", nameSpaceManager).InnerText; 
            receiverPoint.IsManual = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:IsManual", nameSpaceManager).InnerText;
            receiverPoint.LastModifyDate = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:LastModifyDate", nameSpaceManager).InnerText;
            receiverPoint.Latitude = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:LatitudeWGS84", nameSpaceManager).InnerText;
            receiverPoint.Line = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:Line", nameSpaceManager).InnerText;
            receiverPoint.Longitude = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:LongitudeWGS84", nameSpaceManager).InnerText;
            receiverPoint.ReceiverType = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:ReceiverType", nameSpaceManager).InnerText;
            receiverPoint.Station = childNode.SelectSingleNode ("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint/ns:Station", nameSpaceManager).InnerText;




            //Get all the values stored in the receiver point object
            string station = receiverPoint.Station;
            string line = receiverPoint.Line;
            string elevation = receiverPoint.Elevation;
            string latitude = receiverPoint.Latitude;
            string longitude = receiverPoint.Longitude;
            string isDeployed = receiverPoint.IsDeployed;
            string easting = receiverPoint.Easting;
            string receiverType = receiverPoint.ReceiverType;
            string closeDate = receiverPoint.CloseDate;
            string createDate = receiverPoint.CreateDate;
            string createWho = receiverPoint.CreateWho;
            string lastModifyDate = receiverPoint.LastModifyDate;


            Console.WriteLine ("String lat : " + latitude);

            Console.WriteLine ("String lon : " + longitude);

            Console.WriteLine ("String create date : " + createDate);

            Console.WriteLine ("String create who : " + createWho);

            //Save the data to the db
            saveDataToDatabase (station,line,elevation,latitude,longitude,isDeployed,easting,receiverType,closeDate,createDate,createWho,lastModifyDate);


        }

        receiverList.Add (receiverPoint);
return receiverList;
    }
ZwoRmi

这段代码对我有用:

public List<ReceiverPoint> ReadFile()
        {
            var receiverList = new List<ReceiverPoint>();

            Console.WriteLine("Now in read file method :" + "");

            var xmldoc = new XmlDocument();
            xmldoc.Load(@"D:\users\..\Downloads\ReceiverPoints.xml");

            XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);

            //nameSpaceManager.AddNamespace ("ns", "http://schemas.datacontract.org/2004/07/AristotleService.Models");
            nameSpaceManager.AddNamespace("ns", "http://schemas.datacontract.org/2004/07/GTI.Aristotle.Web.Api.Models");



            XmlElement rootElement = xmldoc.DocumentElement;

            XmlNodeList nodeList = rootElement.SelectNodes("/ns:PagedDataInquiryResponseOfReceiverPointQ3ffICf5/ns:Items/ns:ReceiverPoint", nameSpaceManager);


            foreach (XmlNode childNode in nodeList)
            {
                ReceiverPoint receiverPoint = new ReceiverPoint();
                receiverPoint.CloseDate = childNode.SelectSingleNode("ns:CloseDate", nameSpaceManager).InnerText;
                receiverPoint.CreateDate = childNode.SelectSingleNode("ns:CreateDate", nameSpaceManager).InnerText;
                receiverPoint.CreateWho = childNode.SelectSingleNode("ns:CreateWho", nameSpaceManager).InnerText;
                receiverPoint.Easting = childNode.SelectSingleNode("ns:Easting", nameSpaceManager).InnerText;
                receiverPoint.Elevation = childNode.SelectSingleNode("ns:Elevation", nameSpaceManager).InnerText;
                receiverPoint.IsDeployed = childNode.SelectSingleNode("ns:IsDeployed", nameSpaceManager).InnerText;
                receiverPoint.IsManual = childNode.SelectSingleNode("ns:IsManual", nameSpaceManager).InnerText;
                receiverPoint.LastModifyDate = childNode.SelectSingleNode("ns:LastModifyDate", nameSpaceManager).InnerText;
                receiverPoint.Latitude = childNode.SelectSingleNode("ns:LatitudeWGS84", nameSpaceManager).InnerText;
                receiverPoint.Line = childNode.SelectSingleNode("ns:Line", nameSpaceManager).InnerText;
                receiverPoint.Longitude = childNode.SelectSingleNode("ns:LongitudeWGS84", nameSpaceManager).InnerText;
                receiverPoint.ReceiverType = childNode.SelectSingleNode("ns:ReceiverType", nameSpaceManager).InnerText;
                receiverPoint.Station = childNode.SelectSingleNode("ns:Station", nameSpaceManager).InnerText;




                //Get all the values stored in the receiver point object
                string station = receiverPoint.Station;
                string line = receiverPoint.Line;
                string elevation = receiverPoint.Elevation;
                string latitude = receiverPoint.Latitude;
                string longitude = receiverPoint.Longitude;
                string isDeployed = receiverPoint.IsDeployed;
                string easting = receiverPoint.Easting;
                string receiverType = receiverPoint.ReceiverType;
                string closeDate = receiverPoint.CloseDate;
                string createDate = receiverPoint.CreateDate;
                string createWho = receiverPoint.CreateWho;
                string lastModifyDate = receiverPoint.LastModifyDate;


                Console.WriteLine("String lat : " + latitude);

                Console.WriteLine("String lon : " + longitude);

                Console.WriteLine("String create date : " + createDate);

                Console.WriteLine("String create who : " + createWho);

                //Save the data to the db
                //saveDataToDatabase(station, line, elevation, latitude, longitude, isDeployed, easting, receiverType, closeDate, createDate, createWho, lastModifyDate);

                receiverList.Add(receiverPoint);
            }


            return receiverList;
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Xpath 总是在 JAVA 中返回 XML 的第一个子节点

LXML XPath表达式仅返回第一个子节点,而浏览器确认多个子节点

SQL Server将XML解析为表-具有相同名称的多个节点,第一个节点应为表列

TSQL XML值返回所有记录的节点的第一个值

如何在 DOM 子树中找到具有某个类的第一个子节点?

在除第一个子节点之外的所有子节点的文本之间添加空格

将具有多个子节点的Firebase节点复制到另一个节点

如何通过xpath获取节点的第一个子节点之前的文本?

如何获取NodeList中每个节点的第一个子节点的值?

Python:在一个节点中解析具有多个属性的XML文件

如何将xml节点作为第一个子节点插入Java中的另一个xml文档中?

节点红色发送多个消息,仅返回第一个消息

读取两个 XML 文件并将第二个 XML 附加到第一个 XML 节点

识别NetworkX DiGraph中源节点具有两个邻居之后的第一个节点

查找具有特定属性值的第一个节点

XML返回所有节点名称包含一个子字符串

如何使用javascript读取具有多个节点的xml文件

这个div元素的第一个子节点是什么?

获取特定类型的第一个子节点-JavaScript

如何使用querySelector检索div的第一个子元素同级节点?

如何在for循环中获取第一个子节点

我怎样才能只得到第一个子节点?

如何使用具有两个整数参数的方法构建链表,并将引用返回到节点列表的第一个元素?

如何使用beautifulsoup将具有多个子节点的父节点和子节点信息提取到一个数据帧中?

为什么 * 与 XPath 节点函数一起使用时只返回第一个 XML 标记?

当节点前没有pcdata时,XPath选择第一个节点

带有多个子菜单的 Bootstrap 菜单重复第一个子菜单

dplyr:case_when在满足第一个条件后具有多个子字符串条件

我使用libxmljs解析XML文件,.get()始终返回第一个子级