将带有 XML 的字符串转换为数据表、列表或更易于管理的内容?

Convert string with XML to datatable, list or something more manageable?

无需手动解析文件,.Net 是否可以轻松地将带有 XML 的字符串转换为 XmlElementdatatable、[=16] =] 或更易于管理的东西?

这是实际的字符串。此字符串当前存储在 XmlNode 对象中(这是 XmlNode.OuterXml),但我不知道如何转换为我可以实际使用的内容:

<ni>
    <nss>20150927</nss>
    <gp>Addon</gp>
    <ns>CounterBlah1</ns>
    <ns>CounterBlah2</ns>
    <ns>CounterSales</ns>
    <ns>CounterBlah4</ns>
    <ns>CounterBlah5</ns>
    <ns>CounterBlah6</ns>
    <nv>
        <nad>Style=1,Rfu=1,Id=132</nad>
        <r>0</r>
        <r>15</r>
        <r>8</r>
        <r>3</r>
        <r>2</r>
        <r>2</r>
    </nv>
    <nv>
        <nad>Style=1,Rfu=1,Id=433</nad>
        <r>0</r>
        <r>15</r>
        <r>30</r>
        <r>3</r>
        <r>2</r>
        <r>2</r>
    </nv>
    <nv>
        <nad>Style=1,Rfu=1,Id=665</nad>
        <r>0</r>
        <r>15</r>
        <r>90</r>
        <r>3</r>
        <r>2</r>
        <r>2</r>
    </nv>
</ni>

谢谢。

试试这个

          string input = "<ni><nss>20150927</nss><gp>Addon</gp><ns>CounterBlah1</ns><ns>CounterBlah2</ns><ns>CounterSales</ns><ns>CounterBlah4</ns><ns>CounterBlah5</ns><ns>CounterBlah6</ns><nv><nad>Style=1,Rfu=1,Id=132</nad><r>0</r><r>15</r><r>8</r><r>3</r><r>2</r><r>2</r></nv><nv><nad>Style=1,Rfu=1,Id=433</nad><r>0</r><r>15</r><r>30</r><r>3</r><r>2</r><r>2</r></nv><nv><nad>Style=1,Rfu=1,Id=665</nad><r>0</r><r>15</r><r>90</r><r>3</r><r>2</r><r>2</r></nv></ni>";
            StringReader reader = new StringReader(input);

            DataSet ds = new DataSet();
            ds.ReadXml(reader);​

使用Linq-to-Xml你可以得到这样的数据

//using System.Xml.Linq;
//using System.Linq;

//xmlStr = your xml string
var xDoc = XDocument.Parse(xmlStr);
var nvs = xDoc.Descendants("nv");
var nads = nvs.Select(nv => nv.Elements("nad").First().Value).ToList();
var thirdRs = nvs.Select(nv => nv.Elements("r").ElementAt(2).Value).ToList();

这是代码为示例生成的内容 xml

nads = [ "Style=1,Rfu=1,Id=132", "Style=1,Rfu=1,Id=433", "Style=1,Rfu=1,Id=665" ]
thirdRs = [ "8", "30", "90"]