简体   繁体   English

xml读取节点和子节点

[英]xml reading nodes and children nodes

i have this xml: 我有这个XML:

<?xml version="1.0" encoding="UTF-8"?>
<Dictionary>
<Object name="Ship">
    <Struct_Name>tb_Ship</Struct_Name>
        <Owner> ..... </Owner>
           <Parameters>
        <Parameter>
        <Eng_Name>.....</Eng_Name>
        <Discr>.....</Discr>
        <Type>.....</Type>
        </Parameter>

        <Parameter>
        <Eng_Name>......</Eng_Name>
        <Discr>.........</Discr>
        <Type>.................</Type>
        </Parameter>
</Object>

        <Object name="Car">
        <Struct_Name>tb_Car</Struct_Name>
        <Owner> ..... </Owner>
           <Parameters>
        <Parameter>
        <Eng_Name>.....</Eng_Name>
        <Discr>.....</Discr>
        <Type>.....</Type>
        </Parameter>

        <Parameter>
        <Eng_Name>......</Eng_Name>
        <Discr>.........</Discr>
        <Type>.................</Type>
        </Parameter>
   </Object>
</Dictionary>

i try to read this xml like this: 我试图像这样读取此xml:

foreach(var Object in Objects)
print the whole elements values
   foreach(var Parameter in Parameters Of Current Object)
      print the whole elements of current parameter

i try with 2 foreach and its not working always get exception the object is not set to instance of object something like this. 我尝试使用2 foreach,并且它始终无法正常工作,但该对象未设置为此类对象的实例。 there is a way to read this xml like I want? 有没有办法像我想要的读取此xml?

You can use xpath to get what you want, for example, you want to get all parameters: 您可以使用xpath获取所需的内容,例如,获取所有参数:

XmlDocument doc = new XmlDocument();
doc.Load("file.xml");
XmlNodeList parameters = doc.SelectNodes("Dictionary/Object/Parameters/Parameter"); 
// or doc.SelectNodes("//Parameter"); 
foreach(XmlNode parameter in parameters)
{
    // print the whole element
}  

Hopeful it's helpful. 希望它会有所帮助。
By the way, in you xml, the "Parameters" tag is not closed. 顺便说一句,在您的xml中,“ Parameters”标签未关闭。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM