将XML属性添加到DataSet

时间:2010-02-16 22:25:56

标签: asp.net xml

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

2 个答案:

答案 0 :(得分: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之外的其他位置,并使用某种对象来跟踪它。不太确定你的代码是什么样的,但这可能是一个很好的选择。

答案 1 :(得分:0)

使用GetXML()的{​​{1}}方法将整个XML作为字符串。然后添加自定义属性并使用DataSet将该字符串写入xml文件。