簡體   English   中英

如何在C#中使用LINQ從xml列表中獲取單個元素?

[英]How to fetch single elements from xml list using LINQ in c#?

我想從XML文件中獲取數據並將值存儲到C#變量列表中。 所以我也可以用不同的方法使用它。下面是我的XML格式:

<fieldmetadata>
<field>
    <name>Object Text</name>
    <datatype>Text</datatype>
    <label>ABC</label>
</field>

<field>
    <name>Object Short Text</name>
    <datatype>String</datatype>
    <label>PQR</label>
</field>

下面是我的C#代碼:

public List<string> getAllidentifiers()
{     
    List<string> listx = new List<string>();

    XDocument xdoc = XDocument.Load(Path.GetTempPath() + "\\XMLFormat.xml");
    xdoc.Descendants("field").Select(p => new
    {
        name = p.Element("name").Value,
        datatype = p.Element("datatype").Value,
        label = p.Element("label").Value
    }).ToList().ForEach(p =>
    {
        listx.Add(p.name);
        listx.Add(p.datatype);
        listx.Add(p.label);
    });       

   return listx;
}

如何獲取列表元素到變量。

由於您當前的代碼僅返回一個平面字符串列表,因此您可以這樣實現:

var result = XDocument.Load("data.xml")
                      .Descendants("field")
                      .SelectMany(f => f.Elements().Select(e => e.Value))
                      .ToList(); 

但我認為一個更好的解決方案是返回IEnumerablE<Field> ,創建類型:

public class Field
{
    public string Name { get; set; }
    public string DataType { get; set; }
    public string Label { get; set; }
}

然后像這樣反序列化文件:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM