读取包含多个元素的xml文件到asp.net c#中的列表

时间:2017-06-20 16:43:24

标签: c# asp.net xml linq

这是我的xml文件,名为wfXml.xml

<?xml version="1.0" encoding="utf-8" ?>
<webformname>
    <wbfrm>
        <wfname>WebForm1</wfname>
        <wfrm>WebForm1.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm2</wfname>
        <wfrm>WebForm2.aspx</wfrm>
    </wbfrm>        
    <wbfrm>
        <wfname>WebForm3</wfname>
        <wfrm>WebForm3.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm4</wfname>
        <wfrm>WebForm4.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm5</wfname>
        <wfrm>WebForm5.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm6</wfname>
        <wfrm>WebForm6.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm7</wfname>
        <wfrm>WebForm7.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm8</wfname>
        <wfrm>WebForm8.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm9</wfname>
        <wfrm>WebForm9.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm10</wfname>
        <wfrm>WebForm10.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm11</wfname>
        <wfrm>WebForm11.aspx</wfrm>
    </wbfrm>
    <wbfrm>
        <wfname>WebForm12</wfname>
        <wfrm>WebForm12.aspx</wfrm>
    </wbfrm>
</webformname>

这是我发现的代码示例,它使用xmldoc和Linq,但它只处理一个元素。如何为包含2个元素的xml文件实现此代码?

XDocument doc = XDocument.Parse(xml);

List<string> list = doc.Root.Elements("id")
                       .Select(element => element.Value)
                       .ToList();

1 个答案:

答案 0 :(得分:0)

我想我是懒惰的。我提出了这个例程,我可以创建我的列表 - 只是看起来有点冗长。任何改进方式的建议都将受到赞赏:

XDocument doc = XDocument.Load(path + "wfXml.xml");

var wfrms = from r in doc.Descendants("wbfrm")
                    select new
                    {
                        Wfname = r.Element("wfname").Value,
                        Wfrm = r.Element("wfrm").Value
                    };

foreach (var m in wfrms)
{    
    Response.Write(string.Format( "{0}, {1} <br />", m.Wfname, m.Wfrm));
}

然后我可以填充我的List --string,string - 或者可能使用wfrms作为数据源本身。