2016-09-07 3 views
-2

Я следующая строка XMLПреобразовать следующую строку XML в список <string[]>

<Abc> 
<a>value1</a> 
<b>value2</b> 
<c /> 
<d /> 
<x>value3</x> 
<y>value4</y> 
<z /> 
</Abc> 

Выше Строка XML Преобразование в List<string[]>
string[] имеют узел & значение

список Output Если нравится этот

enter image description here

+0

, пожалуйста, проверьте выходное изображение. Я хочу, чтобы строка xml нужно преобразовать в Список CnuVas

ответ

2

Вы можете легко извлечь список всех дочерних элементов с помощью XDocument.Descendants() и использовать их для создания строковых массивов, содержащее имя элемента и значение. Заверните его в списке, и все готово:

var result = XDocument.Parse(xml) 
         .Descendants() 
         .Select(e => new [] { e.Name.LocalName, e.Value }) 
         .ToList(); 
+1

Только ответы на код - это нет здесь. Пожалуйста, добавьте объяснение –

+1

Не знаете, почему мой ответ был выделен из предоставленных, это не так, как если бы там было больше объяснений ... – decPL

+0

Ошибка: данные на корневом уровне недействительны. Строка 1, позиция 1. – CnuVas

0

Попробуйте

void Main() 
{ 
    var doc = new XmlDocument(); 
    doc.LoadXml(str); 
    var result = doc.ChildNodes.OfType<XmlNode>() 
    .Select(n=> n.ChildNodes.OfType<XmlNode>().Select(x => $"{x.Name} - {CheckEmpty(x.InnerText)}").ToArray()).ToList();  
} 

private string CheckEmpty(string input) 
{ 
    return string.IsNullOrEmpty(input) ? "Empty" : input; 
} 


string str = @" 
<Abc> 
<a>value1</a> 
<b>value2</b> 
<c /> 
<d /> 
<x>value3</x> 
<y>value4</y> 
<z /> 
</Abc> 
"; 
Смежные вопросы