Почему строка всегда пуста? - PullRequest
       6

Почему строка всегда пуста?

0 голосов
/ 04 сентября 2011

Я пытаюсь использовать LINQ для чтения XML-файла.Однако строка, в которой хранится значение выбранного атрибута, всегда пуста.

Вот код:

        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 ]

4 голосов
/ 04 сентября 2011

Теперь, когда вы показали свой XML, вот как исправить код:

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

Вы не используете . в XML, как вы используете в C # для навигации по дереву XML.Вы также можете перемещаться по дереву XML, используя XPath :

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();
0 голосов
/ 04 сентября 2011
var ta = from tmp in loaded.Descendants("Table")
select tmp.Element("E1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...