如何使用C#从当前xml节点列表中读取子节点值?

时间:2019-06-30 19:40:57

标签: c# xml nodes

我浏览了许多示例,但找不到正确的代码。我有以下很长的xml页面。

        <Image>
          <Name>46594867_1.jpg</Name>
          <Style>InspectionNonAnnotated</Style>
          <PixelSize>
            <x>4.7355760022126594</x>
            <y>4.7362810178726678</y>
          </PixelSize>
          <ImageROI>
            <x>243.54022216796875</x>
            <y>245.4705810546875</y>
            <Height>8.75</Height>
            <Width>11.25</Width>
          </ImageROI>
        </Image>
        <Image>
          <Name>46594867_2.jpg</Name>
          <Style>InspectionStandardDeviation</Style>
          <PixelSize>
            <x>4.7355760022126594</x>
            <y>4.7362810178726678</y>
          </PixelSize>
          <ImageROI>
            <x>243.54022216796875</x>
            <y>245.4705810546875</y>
            <Height>8.75</Height>
            <Width>11.25</Width>
          </ImageROI>
        </Image>
        <Image>
          <Name>46594867_3.jpg</Name>
          <Style>InspectionReference</Style>
          <PixelSize>
            <x>4.7355760022126594</x>
            <y>4.7362810178726678</y>
          </PixelSize>
          <ImageROI>
            <x>243.54022216796875</x>
            <y>245.4705810546875</y>
            <Height>8.75</Height>
            <Width>11.25</Width>
          </ImageROI>
        </Image>

这是代码的一部分,在imageList下,我有以下nodeList。 我使用以下代码提取了节点列表:

nodeList = xdoc.GetElementsByTagName("Image");
            {
                foreach (XmlNode node in nodeList)
                {
                    xmlCordinates cordinates = new xmlCordinates();
                    cordinates.fileName = node["Name"].InnerText;
                    cordinates.X = Convert.ToDouble(node["ImageROI/x"].InnerText);
                    cordinates.Y = Convert.ToDouble(node["ImageROI/y"].InnerText);
                    ListCordintes.Add(cordinates);
                }
            }

在此代码中,我可以读取节点名称的值,但是x和y失败,因为它们是子节点。在这里阅读它们的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在这里。

            xmlCordinates cordinates = new xmlCordinates();
            cordinates.fileName = node["Name"].InnerText;
            cordinates.X = Convert.ToDouble(**node.ChildNodes[2]["x"].InnerText**);
            cordinates.Y = Convert.ToDouble(**node.ChildNodes[2]["y"].InnerText**);
            ListCordintes.Add(cordinates);