我正在努力学习XDocument
课程。我有一个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);
}
}
}
Feed内容:
<?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&partnerid=13389&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&partnerid=13389&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&partnerid=13389&htmlurl=http://www.bianco.dk/til-hende/sko/party/nutopa-pump-djf15/navy-blue/532674</vareurl>
</produkt>
<produkter>
知道我做错了什么吗?如何改进我的代码,以便找到所有孩子?
答案 0 :(得分:1)
xdoc.Descendants("produkter")
询问名为produkter
的根的后代,其中只有一个,因此计数。
迭代所有<produkt>
foreach (XElement xe in xdoc.Descendants("produkt"))
或者迭代任何子元素
foreach (XElement xe in xdoc.Element("produkter").Elements())
答案 1 :(得分:0)
据我所知 - Descendants("produkter")
将返回名为“produkter”的后代。 (不是后代 “produkter”。)