大家好我可能做错了但是我试图在xml文档中获取内部元素,每次我尝试for循环时它似乎都会一次性返回所有内容
示例xml
<RStream>
<CmdResponse>
</CmdResponse>
<TranResponse>
<ProductData>
<ProductCat1>02</ProductCat1>
<ProductSubCat1>000</ProductSubCat1>
<ProductQty1>32.00</ProductQty1>
<ProductCat2>03</ProductCat2>
<ProductSubCat2>000</ProductSubCat2>
<ProductQty2>72.00</ProductQty2>
</ProductData>
</TranResponse>
</RStream>
foreach (XElement element in doc.Descendants("ProductData"))
{
MessageBox.Show(element.Name.ToString());
MessageBox.Show(element.Value);
}
我得到了ProductData的回复
的回应我试图在循环中得到一个响应,告诉我 ProductCat1然后02 依此类推,ProductData
中可能会有无限数量的回复答案 0 :(得分:1)
您必须对foreach
的子子项使用其他ProductData
:
试试这个例子:
foreach (XElement element in doc.Descendants("ProductData"))
{
foreach (XElement subElement in element.Elements())
{
Debug.WriteLine(subElement.Name.ToString());
Debug.WriteLine(subElement.Value);
}
}
希望这有帮助
答案 1 :(得分:1)
通过使用带有断点的Visual Studio调试器,可以轻松解决此问题。这样做,您可以检查变量element
的值,即此
<ProductData>
<ProductCat1>02</ProductCat1>
<ProductSubCat1>000</ProductSubCat1>
<ProductQty1>32.00</ProductQty1>
<ProductCat2>03</ProductCat2>
<ProductSubCat2>000</ProductSubCat2>
<ProductQty2>72.00</ProductQty2>
</ProductData>
为了获得你想要的东西,你需要这个修改过的代码:
foreach (XElement element in doc.Descendants("ProductData"))
{
foreach (var xElement in element.Elements())
{
MessageBox.Show(xElement.Name.ToString());
MessageBox.Show(xElement.Value);
}
}