C#中XML标记的迭代

时间:2016-12-18 22:40:53

标签: c# xml linq-to-xml

如何编写迭代来循环遍历xml文件上的父标记,如下所示:

<collection>
     <parent>
        <child1>DHL</child1>
        <child2>9000000131</child2>
        <child3>ISS Gjøvik</child13>
        <child4>ISS Gjøvik</child4>
        <child5>ISS Gjøvik</child5>
        <child6>9999000000136</child6>
      </parent>
       <parent>
        <child1>DHL</child1>
        <child2>9000000132</child2>
        <child3>ISS Gjøvik</child13>
        <child4>ISS Gjøvik</child4>
        <child5>ISS Gjøvik</child5>
        <child6>9999000000136</child6>
      </parent>
      <parent>
        <child1>DHL</child1>
        <child2>9000000134</child2>
        <child3>ISS Gjøvik</child13>
        <child4>ISS Gjøvik</child4>
        <child5>ISS Gjøvik</child5>
        <child6>9999000000136</child6>
      </parent>
</collection>

我需要将child1的值作为主键插入数据库。

3 个答案:

答案 0 :(得分:1)

您是否尝试过XmlReader?到目前为止你有什么?请告诉我们一些代码。提醒一下,StackOverflow是一个帮助台,而不是编程服务。

我在其中一个标签中看到了DHL。如果它指的是邮政递送公司,他们有一个易于在.NET代码中使用的API(SDK)..

如果您想使用XML(反)序列化,我建议您开始阅读System.Xml.Serialization命名空间文档。 Microsoft提供了足够的文档和示例。

指向名称空间文档的链接:https://msdn.microsoft.com/en-us/library/system.xml.serialization(v=vs.110).aspx

以下是一些示例,其中包含将xml文档反序列化为poco类所需的任何内容: https://msdn.microsoft.com/en-us/library/58a18dwa(v=vs.110).aspx

答案 1 :(得分:0)

假设您的xml在字符串变量xml中:

var xdoc = XDocument.Parse(xml);
foreach (var parentEls in xdoc.Root.Elements("parent"))
{
    string child1Value = parentEls.Element("child1").Value;
    // your logic using child1 value
}

请注意,您的xml格式错误 - <child3>已被</child13>关闭。

答案 2 :(得分:0)

使用xml linq解析所有内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            var results = doc.Descendants("parent").Select(x => new {
                child1 = (string)x.Element("child1"),
                child2 = (string)x.Element("child2"),
                child3 = (string)x.Element("child3"),
                child4 = (string)x.Element("child4"),
                child5 = (string)x.Element("child5"),
                child6 = (string)x.Element("child6")
            }).ToList();
        }
    }
}