2010-02-16 159 views
0

我想向下面聲明的數據集添加一個屬性,其值是該行中某個字段的值。
所以我想添加如下所示的id。將XML屬性添加到數據集

<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 2010-02-16 22:29:33

+0

添加了XMl示例以更清晰。 – mmcglynn 2010-02-17 14:34:17

回答

1

Dataset.WriteXml()實際上是一種方便的方法,而不是處理XML的靈活方式。

您需要採取另一種方法。有幾個選項:

  1. 如果你只是增加一個屬性,你可以通過重新打開該文件作爲XDocument,添加屬性的必要元素本事到生成的XML,並且再次保存。不是太優雅,但容易,有時容易是最好的。更好的是,只需使用WriteXml()將xml放入一個字符串中,然後加載該字符串作爲XDocument

  2. 直接從查詢生成XML,而不是數據集。 Sql Server 2005和2008有一些很好的XML方法,允許你選擇一組XML行(SELECT ... FOR XML)並指定它的外觀。

  3. 對於您的數據集使用XmlSerialization,並使用序列化過程的自定義控件注入該屬性....這會比它的價值更麻煩。

  4. 將屬性存儲在XML以外的其他位置,並使用某種對象來跟蹤它。不太確定你的代碼是什麼樣的,但這可能是一個很好的選擇。

+0

選項2是最好的一個,謝謝!你的回答非常完整和清晰,比我的問題更重要! – mmcglynn 2010-02-18 15:34:16

0

使用GetXML()DataSet方法來獲取整個XML作爲一個字符串。然後添加您的自定義屬性並使用StreamWriter將該字符串寫入xml文件。