c# - 通过c#读取xml的多个子节点
问题描述
<Products>
<Product>
<Product_code>
<![CDATA[ 9.077 ]]>
</Product_code>
<Price2>799.99</Price2>
<variants>
<variant>
<spec name="Renk">White</spec>
<productCode>
<![CDATA[ 9.0771933 ]]>
</productCode>
<picture>
<![CDATA[ image/data/resimler/hakiki-deri-cz-saracli-topuklu-kadin-cizme-8316.jpg ]]>
</picture>
<picture>
<![CDATA[ image/data/resimler/hakiki-deri-cz-saracli-topuklu-kadin-cizme-8314.jpg ]]>
</picture>
</variant>
<variant>
<spec name="Renk">Black</spec>
<productCode>
<![CDATA[ 9.0771734 ]]>
</productCode>
<picture>
<![CDATA[ image/data/resimler/hakiki-deri-cz-saracli-topuklu-kadin-cizme-8316.jpg ]]>
</picture>
<picture>
<![CDATA[ image/data/resimler/hakiki-deri-cz-saracli-topuklu-kadin-cizme-8314.jpg ]]>
</picture>
</variant>
</variants>
</Product>
</Products>
这是我的 XML 示例:
它是关于带有Product Code
、Color
、Variant Code
和Picture
我想先得到Product_code
s 然后所有Variant
sProduct_code
例如:
产品代码: 9.077
价格2: 799.99
伦克:白色
产品编号: 9.0771933
图片1:链接1
图2:链接2
伦克:黑色
产品编号: 9.0771734
图片1:链接1
图2:链接2
XmlDocument xmlDoc = new XmlDocument();
XmlDocument xDoc = new XmlDocument();
xmlDoc.Load("eticaret.xml");
XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("/Products/Product");
foreach (XmlNode tu in xmlDoc.SelectNodes("/Products/Product"))
{
MessageBox.Show("tu = " + tu.SelectSingleNode("Product_code").InnerText);
foreach (XmlNode tuv in tu.SelectNodes("/Products/Product/variants/variant"))
{
MessageBox.Show("tuv = " + tuv.SelectSingleNode("productCode").InnerText + " - " + tuv.SelectSingleNode("spec[@name='Renk']").InnerText;
}
}
我用了这段代码
它确实有效,但是:第一个给出了第一部分的信息以下仅显示产品变体它不再显示第一个信息
解决方案
这条线有问题:
foreach (XmlNode tuv in tu.SelectNodes("/Products/Product/variants/variant"))
它从所有产品中选择所有变体,而不仅仅是当前tu
节点下的那些。将其更改为:
foreach (XmlNode tuv in tu.SelectNodes("variants/variant"))
这将选择相对于当前节点的tu
节点。
要选择图片,可以使用以下代码:
foreach (XmlNode picture in tuv.SelectNodes("picture"))
{
Console.WriteLine(" " + picture.InnerText);
}
推荐阅读
- python - 尽管下载了 plotnine 包,但出现 No module named 'plotnine' 错误
- python - random.randint() 会生成随机数吗?我所有的猜测总是错的?
- r - 按 colname 标识填充矩阵
- objective-c - ARKit – Spatial Audio 几乎不会随距离改变音量
- javascript - 图层控制和geojson加载
- c# - 如何找到 IEnumerable
元素类型? - java - Android Studio:无法将进程工作目录设置为“新目录”
- mysql - 如何为活动步行检索最快运动员的数据?
- python - tk.PhotoImage 无法打开“gif”
- c# - 将选择/下拉项的值传递给控制器仅接收 0