C# 在c中使用xmlDocument读取子属性

C# 在c中使用xmlDocument读取子属性,c#,xml,C#,Xml,我想读取所有order_h和order_d属性数据。但在我的程序代码上,只显示订单标签数据。下面是我的代码。谢谢 <document> <order> <order_h owner="ABC" order_no="96431"/> <order_d owner="ABC" order_no="96431" item_no="0153-8196-010"> <size assoc_id="1274847" size_id

我想读取所有order_h和order_d属性数据。但在我的程序代码上,只显示订单标签数据。下面是我的代码。谢谢

<document>
<order>
<order_h owner="ABC" order_no="96431"/>
    <order_d owner="ABC" order_no="96431" item_no="0153-8196-010">
        <size assoc_id="1274847" size_id="B0153_0150XSXXLNIVINT_VAEC000076_BK"/>
    </order_d>
    <order_d owner="ABC" order_no="96431" item_no="0153-8196-020">
            <size assoc_id="1274847" size_id="B0153_0150XSXXLNIVINT_VAEC000076_BK"/>
    </order_d>
<order_h/>
</order>
<order>
<order_h owner="ABC" order_no="96432">
    <order_d owner="ABC" order_no="96431" item_no="0153-8196-030">
        <size assoc_id="1274847" size_id="B0153_0150XSXXLNIVINT_VAEC000076_BK"/>
    </order_d>
    <order_d owner="ABC" order_no="96431" item_no="0153-8196-040">
            <size assoc_id="1274847" size_id="B0153_0150XSXXLNIVINT_VAEC000076_BK"/>
    </order_d>
<order_h/>
</order>
</document>



 XmlDocument doc = new XmlDocument();
        doc.Load(@"File.xml");

        XmlNode OrderListNode =
 doc.SelectSingleNode("/document");
        XmlNodeList OrderNodeList =
            OrderListNode.SelectNodes("order/order_h");


        foreach (XmlNode node in OrderNodeList)
        {
            Console.WriteLine(node.Attributes.GetNamedItem("owner").Value);
            Console.WriteLine(node.Attributes.GetNamedItem("order_no").Value);
            Console.WriteLine(node.Attributes.GetNamedItem("profoma_po").Value);

            XmlNodeList OrderdNodeList = OrderListNode.SelectNodes("order_h/order_d");
             foreach (XmlNode orderd in OrderdNodeList)
            {
                Console.WriteLine("D " + orderd.Attributes.GetNamedItem("owner").Value);
                Console.WriteLine("D " + orderd.Attributes.GetNamedItem("order_no").Value);
                Console.WriteLine("D " + orderd.Attributes.GetNamedItem("item_no").Value);
            }


            Console.WriteLine("*****************new Line*******************");

        }
您需要调用SelectNodes以获取不同对象上的order\u d节点。如果需要从属于当前节点的订单节点,则需要调用节点上的SelectNodes:


你能给我们看看你目前掌握的代码吗?你被困在哪里?
foreach (XmlNode node in OrderNodeList)
{
    Console.WriteLine(node.Attributes.GetNamedItem("owner").Value);
    Console.WriteLine(node.Attributes.GetNamedItem("order_no").Value);
    Console.WriteLine(node.Attributes.GetNamedItem("profoma_po").Value);

    XmlNodeList OrderdNodeList = node.SelectNodes("/order_d");
    foreach (XmlNode orderd in OrderdNodeList)
    {
        Console.WriteLine("D " + orderd.Attributes.GetNamedItem("owner").Value);
        Console.WriteLine("D " + orderd.Attributes.GetNamedItem("order_no").Value);
        Console.WriteLine("D " + orderd.Attributes.GetNamedItem("item_no").Value);
    }

    Console.WriteLine("*****************new Line*******************");
}