【发布时间】:2020-12-18 00:05:50
【问题描述】:
<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_codes,然后是Product_code中的所有Variants
例如:
产品代码: 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;
}
}
我用过这段代码
它确实有效,但是: 首先给出第一部分的信息 以下仅显示产品变体 它不再显示第一个信息
【问题讨论】:
-
欢迎来到 Stack Overflow!您能否向我们展示您已经尝试过的方法以及您遇到的具体问题?
-
我使用“foreach XmlNode”获取(Product_code:9.077 和 Price2:799.99)然后我认为我应该使用第二个 foreach 来获取(Product_code:9.077)的(Renk,productCode,picture1,picture2)
-
反序列化 Xml 是选项之一。 This stack overflow link will help you
-
请将您的尝试作为格式化代码添加到您的问题中。
-
Biju Kalanjoor,我这样做,没关系,但问题出在第二个子节点(Renk,productCode,picture1,picture2)总产品:1233 每个产品有 5 或 5 个变体
标签: c# xml xml-parsing