2012-04-23 2 views
1

, хотя есть много примеров, я не могу найти то, что мне нужно? Мой вопрос просто так же, как и название «Как преобразовать datatable в xml» ...Как преобразовать datatable в xml?

Хотя, вы можете предложить решение любой технологии, но у меня есть также отправная точка, пожалуйста, взгляните на этот код.

Dim xmlDoc As New XDocument(
        New XElement("Class",         
           From row In dt.AsEnumerable() 
           Select New XElement("PUPIL", 
            New XAttribute("FIRSTNAME", row.Field(Of String)("First Name")), 
            New XAttribute("LASTNAME", row.Field(Of String)("Last Name")), 
            New XAttribute("DOB", row.Field(Of String)("DoB")), 
            New XAttribute("YEAR", row.Field(Of String)("Year")), 
            New XAttribute("SEX", row.Field(Of String)("Gender")), 
            New XAttribute("CLASSNAME", row.Field(Of String)("Reg")) 
           ))))) 

В этом примере мне нужно знать, сколько столбцов и имя столбцов выполняют преобразование. Мне не нравится жестко указывать имя столбца в Linq, возможно ли это сделать в Linq с любым количеством столбцов и имен столбцов?

Если кто-то может предложить мне улучшить этот Linq, чтобы обрабатывать любые столбцы из данных, которые были бы замечательными.

Спасибо большое.

LINQ Solution ...

Dim xmlDoc As New XDocument(      
     From row In dt.Rows 
     Select New XElement("Pupil", 
     From column In dt.Columns 
     Select 
     New XAttribute(column.ToString, row.Item(column.ToString)))) 

Для решения Datatable.WriteXML, пожалуйста, обратитесь к сообщению Хабиба

+0

Почему вы должны использовать LINQ? – Clueless

+0

Я люблю LINQ Спасибо – lawphotog

ответ

2

Вместо LINQ вы можете использовать: DataTable.WriteXML();

 DataTable dt = new DataTable(); 
     dt.WriteXml("myxmlfile.xml"); 

Если вы хотите читать и записывать данные в соответствии с Схемой, выполните f ollowing шаг:

  • Я считаю, что у вас есть данные в DataTable, Вы, вероятно, также есть XML для данных, откройте этот XML в Visual Studio, Генерация схемы с помощью -> В меню Select -> XML -> Создание схемы
  • Это создаст файл схемы, сохранить этот файл схемы, например test1.xsd
  • Попробуйте следующий код

    DataSet ds = new DataSet(); 
    ds.ReadXmlSchema("test1.xsd"); //This will read and prepare dataset according to tes1.xsd schema 
    ds.ReadXml("test.xml"); // This will read the XML and it should be schema compliant 
    ds.WriteXml("test7.xml");//This will write the new XML according to schema 
    

    в вашем случае вы можете изменить схему вашей потребности, а затем вы можете использовать XML-схема для создания документов от Dataset до XML. Сначала вы должны сохранить данные в наборе данных. (Я не слишком уверен в этом подходе, но так как я не видел новых ответов на этот вопрос, я подумал, что это может быть полезно для вас)

+0

Спасибо за помощь .. но я не могу сделать это Habib .... XML должен быть отформатирован таким образом, чтобы его можно было прочитать одним из наших программ снова .. – lawphotog

+0

@LaurenceNyein, вам нужно получить XML-схему в наборе данных, и тогда вы сможете это сделать, посмотрите этот поток http://stackoverflow.com/questions/354568/how-to-specify-format-of-xml-output- when-writing-from-a-datatable – Habib

+0

Я не знаком с материалами XSD. как я могу сказать, что функция WriteXML использует XSD для использования при написании xml? Благодарю. – lawphotog