2010-02-16 7 views
0

Я хочу добавить атрибут к объявленному ниже набору данных, значение которого является значением одного из полей в строке.
Поэтому я хочу добавить идентификатор, как показано ниже.Добавление атрибутов XML в DataSet

<root> 
    <Table id="GAS-405"> 
     <apple>2009FA</apple> 
     <orange>3.00</orange> 
     <pear>BGPR</pear> 
     <banana>GAS-405</banana> 
    </Table> 
</root> 

Это поможет мне идентифицировать узел позже в моем приложении.
Возможно ли это? Легче ли это сделать с помощью XMLDocument?

Dim sdaFoo As SqlDataAdapter = New SqlDataAdapter("SELECT BLAH FROM BLAHBLAH", conn) 
    Dim dsFoo As DataSet = New DataSet() 
    dsFoo.DataSetName = "apple" 
    sdaFoo.Fill(dsFoo) 
    dsFoo.WriteXml("C:\Inetpub\wwwroot\foo.xml") 
+0

Ваш вопрос непонятен. Где именно вы хотите использовать атрибуты? – SLaks

+0

Добавлен пример XMl, чтобы быть более понятным. – mmcglynn

ответ

1

Dataset.WriteXml() действительно удобный метод, а не гибкий способ работы с XML.

Вам нужно будет сделать другой подход. Есть несколько вариантов:

  1. Если вы просто добавить один атрибут, вы могли бы взломать его в результирующий XML путем повторного открытия файла в качестве XDocument, добавив атрибут к нужному элементу, и сохраняя его снова. Не слишком элегантный, но легкий, а иногда и простой. Еще лучше, просто используйте WriteXml(), чтобы поместить ваш xml в строку, а затем загрузите строку как ваш XDocument.

  2. Создайте XML из своего запроса напрямую, а не как набор данных. В Sql Server 2005 и 2008 есть несколько хороших методов XML, которые позволяют вам выбирать набор строк как XML (SELECT ... FOR XML) и указывать, как он выглядит.

  3. Использовать XmlSerialization для вашего набора данных и вставлять атрибут с помощью пользовательского контроля процесса сериализации .... это будет больше проблем, чем того стоит.

  4. Храните атрибут где-то еще вне вашего XML и используйте какой-то объект, чтобы отслеживать его. Не совсем уверен, что такое ваш код, но это может быть отличным вариантом.

+0

Вариант 2 был лучшим здесь, спасибо! Ваш ответ был очень полным и сформулировал, более того, чем мой вопрос! – mmcglynn

0

GetXML() Используйте метод DataSet, чтобы получить весь XML в виде строки. Затем добавьте свои пользовательские атрибуты и напишите эту строку в xml-файл, используя StreamWriter.

Смежные вопросы