XML:读取元素的子元素

时间:2010-09-23 10:28:39

标签: c# xml

我正在研究在XML文件中存储设置的可能性。这是我的代码的简化版本。你没有在这里看到它,但是这段代码位于try块内,这样我就可以捕获任何出现的XmlException

XmlReader fileReader = XmlReader.Create(Path.GetDirectoryName(Application.ExecutablePath) + "\\settings.xml");

// Start reading
while (fileReader.Read())
{
    // Only concern yourself with start tags
    if (fileReader.IsStartElement())
    {
        switch (fileReader.Name)
        {
            // Calendar start tag detected
            case "Calendar":
                //
                // 
                // Here's my question: can I access the children
                // of this element here?
                //
                //
                break;
        }
    }
}

// Close the XML reader
fileReader.Close();

我可以在我发表重要评论的代码中当场访问某个元素的子元素吗?

4 个答案:

答案 0 :(得分:1)

有些应用程序使用XmlReader来读取XML文档是正确的答案。除非你有数十万个你想要阅读的用户设置(你没有)并且你不需要更新它们(你这样做),XmlReader是错误的选择。

由于您正在讨论想要在XML中存储数组和结构,因此我很明显您希望使用.NET的内置序列化机制。 (如果访问XML对您很重要,您甚至可以使用XML作为序列化格式。)请参阅this page作为起点。

如果您正确设计了您的设置类(这并不难),您可以对它们进行序列化和反序列化,而无需编写对您要序列化的属性的名称和数据类型有任何了解的代码。访问设置的代码将与它们如何持久化的实现细节完全分离,正如玛莎·斯图尔特所说,这是一件好事。

答案 1 :(得分:0)

查看this短篇文章以获取解决方案。

顺便说一下,如果你想用XML (overview)轻松工作,你应该使用LINQ to XML。

答案 2 :(得分:0)

您可以在XmlReader上使用以下任何方法:

  • ReadSubtree()
  • ReadInnerXml()
  • ReadOuterXml()
  • ReadStartElement()

阅读儿童内容。您使用哪一个取决于您对所述儿童内容的确切要求。

答案 3 :(得分:0)

App.config并创建自定义部分。

App.Config and Custom Configuration Sections