2016-05-24 7 views
2

Я ищу несколько дней, чтобы разобрать мой XML-файл. Итак, я хочу восстановить все ключевые значения корневого элемента.Как получить все ключевые значения корневого элемента с помощью C#?

Exemple файла:

<?xml version="1.0" ?> 
<!DOCTYPE ....... SYSTEM "....................."> 
<coverage x="y1" x2="y2" x3="y3" x4="y4"> 
    <sources> 
     <source>.............</source> 
    </sources> 
    ..... 
<\coverage> 

Здесь, я хочу восстановить все значения "охвата": x1 и его значение, x2 и его значение, x3 и его значение x3 ... I уже попробовали использовать «XmlReader» со всем учебником, которое я мог найти, но он все еще не работает. Все учебники, которые я мог бы попробовать, восстановить значение в определенном узле (теге), но никогда не все значения корневого элемента.

Возможно, учебник с этой же проблемой уже существует, но я его не нашел.

Заранее благодарю вас за помощь.

+0

Посмотрите на рекурсивный метод на следующей веб-странице: http://stackoverflow.com/questions/28976601/recursion-parsing-xml-file-with-attributes-into-treeview-c-sharp – jdweng

ответ

1

Вы можете использовать XElement и сделать это.

XElement element = XElement.Parse(input); 

var results = element.Attributes() 
        .Select(x=> 
          new 
          { 
           Key = x.Name, 
           Value = (string)x.Value 
          }); 

Выход

{ Key = x, Value = y1 } 
{ Key = x2, Value = y2 } 
{ Key = x3, Value = y3 } 
{ Key = x4, Value = y4 } 

Проверить это Demo

0
 //Use System.Xml namespace 
     //Load the XML into an XmlDocument object 
     XmlDocument xDoc = new XmlDocument(); 
     xDoc.Load(strPathToXmlFile); //Physical Path of the Xml File 
     //or 
     //xDoc.LoadXml(strXmlDataString); //Loading Xml data as a String 

     //In your xml data - coverage is the root element (DocumentElement) 
     XmlNode rootNode = xDoc.DocumentElement; 

     //To get all the attributes and its values 
     //iterate thru the Attributes collection of the XmlNode object (rootNode) 
     foreach (XmlAttribute attrib in rootNode.Attributes) 
     { 
      string attributeName = attrib.Name; //Name of the attribute - x1, x2, x3 ... 
      string attributeValue = attrib.Value; //Value of the attribute 

      //do your logic here 
     } 

     //if you want to save the changes done to the document 
     //xDoc.Save (strPathToXmlFile); //Pass the physical path of the xml file 

     rootNode = null; 
     xDoc = null; 

Надеется, что это помогает.

+0

Спасибо за ваш ответ, я хотел попробовать ваш код, но я получаю сообщение об ошибке «(407)« Требуется прокси-аутентификация »), я думаю (я даже уверен), потому что у нас есть прокси. Итак, я продолжу предыдущее решение, но спасибо вам за ваш ответ. –

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