Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xdocument中读取Insde_C#_Linq To Xml - Fatal编程技术网

C# 在Xdocument中读取Insde

C# 在Xdocument中读取Insde,c#,linq-to-xml,C#,Linq To Xml,大家好,我可能做错了,但我试图获取xml文档中的内部元素,每次尝试for循环时,它似乎都会一次性返回所有内容 示例xml <RStream> <CmdResponse> </CmdResponse> <TranResponse> <ProductData> <ProductCat1>02</ProductCat1> <ProductSubCat1>0

大家好,我可能做错了,但我试图获取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);
}

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);
    }
}