【问题标题】:c# DataSet with depth more than threec# 深度超过三的DataSet
【发布时间】:2012-05-23 11:55:43
【问题描述】:

我想使用一个 xml 文件来存储我的程序数据。 xml的结构如下:

<?xml version="1.0" standalone="yes"?>
<Data>
    <Projects>
        <Project>
            <Name>Name1</Name>
            <Description>Description1</Description>
        </Project>
        <Project>
            <Name>Name2</Name>
            <Description>Description2</Description>
        </Project>
    </Projects>
</Data>

我想使用DataSet,因为它提供了对 xml 结构的轻松读写。但问题是,如何读写&lt;Project&gt;-Nodes 的值?我可以访问&lt;Projects&gt;-Node,但是我不知道如何继续,因为我猜单个项目不是表。那么,如何访问深度三(数据->项目->项目)中的节点?我认为这必须以某种方式起作用,因为读取文件并将其输出到控制台上确实有效。

【问题讨论】:

    标签: c# xml dataset


    【解决方案1】:

    而不是DataSet,我建议您改用 XDocument 和 XElement,因为它们可以提供更好的 API 来访问 XML 结构中的项目。

    http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx

    另一个可以帮助您入门的链接:

    How to Get XML Node from XDocument

    【讨论】:

    • 嗯...听起来不错。我认为使用DataSets 会更容易,但这似乎不是正确的方法。我会看看你(和丹尼尔)建议的课程。谢谢...
    【解决方案2】:

    您最好尝试使用具有对象列表的 Data 类 Project 更容易序列化/反序列化。我认为使用数据集读取/写入 xml 并不容易。

    【讨论】:

      【解决方案3】:

      听起来DataSet 不适合您。它不是用于读写任意 XML 的通用机制。

      如果您使用的是 .NET Framework 4 或更高版本,我建议使用 XDocument 而不是 DataSet

      如果您使用的是较旧的 .NET Framework 版本,那么还有很多其他选项,包括 XmlDocumentXmlReaderXmlSerlializer。选择哪一个取决于您的数据来自哪里以及您希望如何处理它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 2019-02-11
        • 2022-08-23
        • 2020-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多