繁体   English   中英

简单的LINQ to XML

[英]Simple LINQ to XML

在C#中,如何使用LINQ从XML文件中选择值?

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<Level1>
<Level2>
    <Value1>This-is-value-1</Value1>
    <Value2>This-is-value-2</Value2>
    <Value3>This-is-value-3</Value3>
    <Value4>This-is-value-4</Value4>
</Level2>  
</Level1>

这是我到目前为止的代码:

var doc = XDocument.Load(filename);
var values = from lv1 in doc.Descendants("level1")
            from lvl2 in lv1.Descendants("Level2")
            select new {
                Value1 = lv1.Attribute("Value1").Value,
                Value2 = lv1.Descendants("Value2").Value,
                Value3 = lv1.Descendants("Value3").Value,
                Value4 = lv1.Descendants("Value4").Value,
            };

我想检索以下值:

  • 值1
  • 值2
  • 值3
  • 值4

请让我帮忙一下

编辑

抱歉,我想补充一点,我想将这些值放在本地字段中。

例如,这是字段名称:

string Value1;
string Value2;
string Value3;
string Value4;

我可以帮忙将LINQ语句中的值放入本地字段吗?

当前代码有很多错误:

  • 当XML中没有Attribute时,您正在使用Attribute
  • 您试图在Descendants上使用Value属性,但是Descendants返回IEnumerable<XElement>
  • 您不在任何地方使用lv2
  • 您正在寻找level1作为元素名称而不是Level1 (XML区分大小写。)

我怀疑你只是想要:

var doc = XDocument.Load(filename);
var values = from level in doc.Descendants("Level1").Descendants("Level2")
             select new {
                 Value1 = (string) level.Element("Value1"),
                 Value2 = (string) level.Element("Value2"),
                 Value3 = (string) level.Element("Value3"),
                 Value4 = (string) level.Element("Value4")
             };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM