将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")
Dataset.WriteXml()
实际上是一种方便的方法,而不是处理XML的灵活方式。
您需要采取另一种方法。有几个选项:
如果你只是增加一个属性,你可以通过重新打开该文件作为
XDocument
,添加属性的必要元素本事到生成的XML,并且再次保存。不是太优雅,但容易,有时容易是最好的。更好的是,只需使用WriteXml()
将xml放入一个字符串中,然后加载该字符串作为XDocument
。直接从查询生成XML,而不是数据集。 Sql Server 2005和2008有一些很好的XML方法,允许你选择一组XML行(SELECT ... FOR XML)并指定它的外观。
对于您的数据集使用XmlSerialization,并使用序列化过程的自定义控件注入该属性....这会比它的价值更麻烦。
将属性存储在XML以外的其他位置,并使用某种对象来跟踪它。不太确定你的代码是什么样的,但这可能是一个很好的选择。
选项2是最好的一个,谢谢!你的回答非常完整和清晰,比我的问题更重要! – mmcglynn 2010-02-18 15:34:16
使用GetXML()
的DataSet
方法来获取整个XML作为一个字符串。然后添加您的自定义属性并使用StreamWriter
将该字符串写入xml文件。
你的问题不清楚。你究竟在哪里想要属性? – SLaks 2010-02-16 22:29:33
添加了XMl示例以更清晰。 – mmcglynn 2010-02-17 14:34:17