C # Преобразование CSV в XML с использованием LINQ - PullRequest
0 голосов
/ 16 декабря 2009

Задача - преобразовать файл CSV в XML.

var x = from line in File.ReadAllLines(@"d:\sample.txt")
        where !line.StartsWith("#") && line.Length>0
        let parts=line.Split(',')
       select new
       {
         XmlFile= new XElement("root",
                                new XElement("ISBN",parts[0]),
                                new XElement("Title",parts[1])
                               )

       };

Вопросы

1) Как избавиться от потока (Использование Statement с LINQ).

2) Как сохранить выделение в файле "sample.xml"?

3) Как связать файл XML с GridView? (Нужно ли использовать XmlDataSource?).

4) Можно ли с помощью Linq создать XSD для моего XML? (без использования XSD.exe).

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

1) File.ReadAllLines выполняет File.Close, поэтому у вас не должно быть проблем с потоком.

2) Вам нужно поместить свой запрос Linq в декларацию XElement, чтобы получить из нее XElement, а не IEnumerable из XElements (см. Ниже)

3 & 4 кто-то другой может ответить ...;)

(Предупреждение, следующий код не проверен) :

var xmlFile = new XElement("root", 
        from line in File.ReadAllLines(@"d:\sample.txt")
        where !line.StartsWith("#") && line.Length>0
        let parts=line.Split(',')
        select new XElement("book",
                            new XElement("ISBN",parts[0]),
                            new XElement("Title",parts[1])
                           )
        );
0 голосов
/ 16 декабря 2009

1) Я не думаю, что вам нужно явно распоряжаться потоком. Вы обнаружили утечку?
2) Вместо создания объектов (типа anon) со свойством XMLFile, сопоставьте список элементов XML

...
select new XElement("root",
                                new XElement("ISBN",parts[0]),
                                new XElement("Title",parts[1])
                               )

Теперь вы можете программно создать XmlDocument или родительский XElement, добавить список в качестве дочерних элементов и сохранить его в файл с помощью функции-члена в приведенных выше классах XML.

3) Привязка данных: ищите Документы XmlDataProvider MSDN .
4) XSD также является XML. Так что нет причин, почему вы не можете сгенерировать это программно ... хотя я никогда не пробовал. Если вы не смотрите на автоматическую генерацию схемы из XML-файла, созданного вами на шаге 2 ... в этом случае я не знаю ответа на этот вопрос. Не уверен, что какой-либо инструмент может сгенерировать правильную спецификацию формата из правильной реализации спецификация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...