C# 在Xdocument中读取Insde
大家好,我可能做错了,但我试图获取xml文档中的内部元素,每次尝试for循环时,它似乎都会一次性返回所有内容 示例xmlC# 在Xdocument中读取Insde,c#,linq-to-xml,C#,Linq To Xml,大家好,我可能做错了,但我试图获取xml文档中的内部元素,每次尝试for循环时,它似乎都会一次性返回所有内容 示例xml <RStream> <CmdResponse> </CmdResponse> <TranResponse> <ProductData> <ProductCat1>02</ProductCat1> <ProductSubCat1>0
<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);
}
02
000
32
03
000
72
foreach(文档子体(“ProductData”)中的XElement元素)
{
Show(element.Name.ToString());
MessageBox.Show(element.Value);
}
我得到了ProductData的响应
然后是
我试图在循环中得到一个响应,它将显示给我
产品类别1然后是02
依此类推,ProductData中可能有无限数量的响应您必须在
ProductData
的子级上使用另一个foreach
:
请尝试以下示例:
foreach (XElement element in doc.Descendants("ProductData"))
{
foreach (XElement subElement in element.Elements())
{
Debug.WriteLine(subElement.Name.ToString());
Debug.WriteLine(subElement.Value);
}
}
希望这有助于通过使用带断点的Visual Studio调试器,您可以轻松解决此问题。这样,您可以检查变量
元素的值,即
<ProductData>
<ProductCat1>02</ProductCat1>
<ProductSubCat1>000</ProductSubCat1>
<ProductQty1>32.00</ProductQty1>
<ProductCat2>03</ProductCat2>
<ProductSubCat2>000</ProductSubCat2>
<ProductQty2>72.00</ProductQty2>
</ProductData>
问题不清楚。给定xml的期望输出是什么?是否要打印ProductData
的所有子元素?@Gliad Green抱歉,我不清楚我正在查找输出ProductCat1然后是02,在下一个循环ProductSubCat1和000上,输出是什么意思?对于给定的数据,您想要的结果是什么?谢谢这是完美的,我没有意识到我需要进行第二次foreach循环谢谢您,答案基本相同不明白我需要额外的循环
foreach (XElement element in doc.Descendants("ProductData"))
{
foreach (var xElement in element.Elements())
{
MessageBox.Show(xElement.Name.ToString());
MessageBox.Show(xElement.Value);
}
}