将XML属性添加到数据集

问题描述:

我想向下面声明的数据集添加一个属性,其值是该行中某个字段的值。
所以我想添加如下所示的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

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

使用GetXML()DataSet方法来获取整个XML作为一个字符串。然后添加您的自定义属性并使用StreamWriter将该字符串写入xml文件。