从Xml文件中获取两个不同的属性

时间:2013-06-05 12:34:11

标签: c# xml xmltextreader

我有一个如下所示的Xml文件:

<Head>
<Node Name="something" value="10"/>
<Node Name="somethingElse" value="3"/>
</head>
<Head>
<Node Name="something" value="10"/>
<Node Name="somethingElse" value="3"/>
</head>

我想要的是能够创建和包含两个具有名称和密钥的对象的对象。

这是我到目前为止所做的:

public void XmlReaderMethod(string Path)
{
SomeObject object = new Object();
 using (XmlTextReader xReader = new XmlTextReader(Path))
            {
                while (xReader.Read())
                {
                    if (xReader.NodeType == XmlNodeType.Attribute)
                    {
                        if (xReader.Name == "Name")
                        {
                            object = new object(xReader.Name);

                        }
                        else if (xReader.Name == "Value")
                        {
                           object.Key = xReader.Name;
                        }
                    }
                  //For Every two objects
                  //OtherObject otherObject = new OtherObject(object1, object2);
                }
            }
         }

但我想要它做的是使用名称和值创建每两个SomeObject来创建一个包含两个someObject的OtherObject。

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您真正想要做的是为OtherObject元素的每个实例创建一个Head,子对象代表子Node元素。

这样的事情应该有效:

XmlDocument oXml = new XmlDocument();
oXml.Load(Path);

//Get a list of Head nodes. For each one of these, create an `OtherObject`
XmlNodeList headNodes = oXml.SelectNodes("//Head");

foreach(XmlNode headNode in headNodes)
{
    //Get a list of the child 'Node' nodes
    XmlNodeList childNodes = headNode.SelectNodes("./Node");

    if(childNodes.Count == 2)
    {
       Object firstObject = new Object() { 
                                            Name = childNodes[0].Attributes["Name"].Value,
                                            Key = childNodes[0].Attributes["Key"].Value 
                                         };

       Object secondObject = new Object() { 
                                            Name = childNodes[1].Attributes["Name"].Value,
                                            Key = childNodes[1].Attributes["Key"].Value 
                                         };                                      

        OtherObject oOther = new OtherObject(firstObject, secondObject);

    }


}

答案 1 :(得分:0)

您可能希望使用Linq-To-Xml代替

相关问题