读取 Xdocument Insde

Reading Insde of a Xdocument

大家好,我可能做错了,但我试图在 xml 文档中获取内部元素,每次我尝试 for 循环时,它似乎 return 全部都一次性付清

样本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

中的响应数量可能不受限制

您必须在 ProductData 的子 children 上使用另一个 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 调试器轻松解决此问题。这样做,您可以检查变量 element 的值,即 this

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