2013-06-05 4 views
0

У меня есть XML-файл, который выглядит следующим образом:Получить два различных атрибутов из 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 создан с именем и значением, чтобы создать OtherObject, который содержит два SomeObject.

+0

ли вы пытаетесь прочитать файл XML с XMLDocument.SelectNodes() метод - таким образом, вы получите список узлов XML, и вы могли бы манипулировать ими намного проще, чем с XmlTextReader – NDraskovic

ответ

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

    } 


} 
+0

Именно, спасибо. –

Смежные вопросы