仅使用 XDocument 迭代 XML 文档 return 1 个后代

Iterating an XML document using XDocument only return 1 descendant

我正在与 XDocument class 作斗争。我有一个 XML 文档,其中包含 "produkter",然后是一长串子项 (1000+)。

然而,当我调用xdoc.Descendants("produkter").Count()时,长度只有1。

我的代码:

public void Transform()
        {
            var path = HttpContext.Current.Server.MapPath("~/Content/Feeds/produkter-partnerid13389-Bianco.dk.xml");

            XDocument xdoc = XDocument.Load(path);

            foreach (XElement xe in xdoc.Descendants("produkter"))
            {
                if (xe == null)
                {
                    continue;
                }

                var xer = xe.Element("produkt");

                var productId = xer.Element("produktid").Value;

                var biancoProd = getBiancoPoco(xer);

                // create
                var product = _productService.GetProductById(productId, supplierId);
                if (product == null)
                {
                    Product pr = new Product();
                    setProductByPoco(pr,biancoProd);
                    _productService.Create(pr);

                    Debug.WriteLine("Creating new product: {0}",pr.Guid);
                }
                // update
                else
                {
                    setProductByPoco(product, biancoProd);
                    _productService.Update(product);
                }
            }
        }

供稿内容:

<?xml version="1.0" encoding="iso-8859-1"?>
<produkter>

<produkt><forhandler>Bianco.dk</forhandler>
<kategorinavn>Til Hende - Sko - Ballerina|Til Hende - Sko - Flade sko</kategorinavn>
<produktnavn>Laced Up Shoe DJF15</produktnavn>
<produktid>532683</produktid>
<beskrivelse>Canvas sko med snørelukning og kraftig sål fra Bianco</beskrivelse>
<nypris>399.00</nypris>
<billedurl>http://www.bianco.dk/upload/images/product_image/main/13/130213.jpg</billedurl>
<vareurl>http://www.partner-ads.com/dk/klikbanner.php?bannerid=21309&amp;partnerid=13389&amp;htmlurl=http://www.bianco.dk/til-hende/sko/ballerina/laced-up-shoe-djf15/navy-blue/532683</vareurl>
</produkt>

<produkt><forhandler>Bianco.dk</forhandler>
<kategorinavn>Til Hende - Sko - Party|Til Hende - Sko - Stiletter|Til Hende - Sko - Pumps</kategorinavn>
<produktnavn>Nutopa Pump DJF15</produktnavn>
<produktid>532674</produktid>
<beskrivelse>Klassisk pump med medium hælhøjde og plateau fra Bianco</beskrivelse>
<nypris>449.00</nypris>
<billedurl>http://www.bianco.dk/upload/images/product_image/main/76/131376.jpg</billedurl>
<vareurl>http://www.partner-ads.com/dk/klikbanner.php?bannerid=21309&amp;partnerid=13389&amp;htmlurl=http://www.bianco.dk/til-hende/sko/party/nutopa-pump-djf15/nougat/532674</vareurl>
</produkt>

<produkt><forhandler>Bianco.dk</forhandler>
<kategorinavn>Til Hende - Sko - Party|Til Hende - Sko - Stiletter|Til Hende - Sko - Pumps</kategorinavn>
<produktnavn>Nutopa Pump DJF15</produktnavn>
<produktid>532674</produktid>
<beskrivelse>Klassisk pump med medium hælhøjde og plateau fra Bianco</beskrivelse>
<nypris>449.00</nypris>
<billedurl>http://www.bianco.dk/upload/images/product_image/main/82/131382.jpg</billedurl>
<vareurl>http://www.partner-ads.com/dk/klikbanner.php?bannerid=21309&amp;partnerid=13389&amp;htmlurl=http://www.bianco.dk/til-hende/sko/party/nutopa-pump-djf15/navy-blue/532674</vareurl>
</produkt>
<produkter>

知道我做错了什么吗?应该如何改进我的代码以便找到所有子项?

xdoc.Descendants("produkter") 请求名为 produkter 的根的后代,其中只有一个,因此计数。

遍历所有<produkt>

foreach (XElement xe in xdoc.Descendants("produkt"))

或迭代任何子元素

foreach (XElement xe in xdoc.Element("produkter").Elements())

据我所知 - Descendants("produkter") 将 return 后代 命名为 "produkter"。 (不是 "produkter" 的后代。)