我想在下面声明的数据集中添加一个属性,其值是行中某个字段的值。
所以我想添加id,如下所示。
<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 :(得分:1)
Dataset.WriteXml()
实际上是一种方便的方法,而不是处理XML的灵活方式。
你需要采取另一种方法。有几个选择:
如果您只是添加一个属性,则可以通过将文件重新打开为XDocument
,将该属性添加到必需元素中并再次保存,将其破解为生成的xml 。不太优雅,但容易,有时容易是最好的。更好的是,只需使用WriteXml()
将xml放入字符串中,然后将字符串加载为XDocument
。
直接从查询生成XML,而不是作为数据集。 Sql Server 2005和2008有一些很好的XML方法,允许您选择一组行作为XML(SELECT ... FOR XML)并指定它的外观。
对数据集使用XmlSerialization并使用序列化过程的自定义控件注入属性....这将比它的价值更麻烦。
将属性存储在XML之外的其他位置,并使用某种对象来跟踪它。不太确定你的代码是什么样的,但这可能是一个很好的选择。
答案 1 :(得分:0)
使用GetXML()
的{{1}}方法将整个XML作为字符串。然后添加自定义属性并使用DataSet
将该字符串写入xml文件。