将以下字符串 XML 转换为列表<string[]>

Convert following String XML into List<string[]>

我有以下字符串 XML

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

以上XML字符串转换为List<string[]>
string[] 有节点 & 值

输出列表应该是这样的

试试这个

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

您可以使用 XDocument.Descendants() 轻松提取所有子元素的列表,并使用它们创建包含元素名称和值的字符串数组。将它包装在一个列表中,你就完成了:

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