为什么字符串总是空的?

时间:2011-09-04 08:11:47

标签: c# linq linq-to-xml

我尝试使用LINQ来读取XML文件。但是,存储selected属性值的字符串始终为空。

以下是代码:

        string output = "";
        XDocument loaded = XDocument.Load(@"d:\input.xml");

        var ta = from tmp in loaded.Descendants("NewDataSet.Table")
                select tmp.Element("E1");

        foreach (string ss in ta)
        {
            ouput += ss;

        }

output字符串始终为空。但是ss字符串具有正确的值。

有什么问题?

我不知道如何添加带样式的xml文件。所以我必须将xml文件更新为图像。 :( enter image description here

2 个答案:

答案 0 :(得分:4)

现在您已经展示了XML,以下是修复代码的方法:

var ta = from tmp in loaded.Descendants("Table")
         select tmp.Element("E1");

您不像在C#中那样使用.来导航XML树。您还可以使用XPath导航XML树:

var ta = from tmp in loaded.XPathSelectElements("NewDataSet/Table/E1")
         select tmp;

另外,我建议您为此输出变量使用StringBuilder而不是字符串连接:

var ta = from tmp in loaded.Descendants("Table")
         select tmp.Element("E1");

var builder = new StringBuilder();
foreach (string ss in ta)
{
    builder.Append(ss);
}
string output = builder.ToString();

答案 1 :(得分:0)

var ta = from tmp in loaded.Descendants("Table")
select tmp.Element("E1");