【问题标题】:C# reading from a XML fileC# 从 XML 文件中读取
【发布时间】:2016-05-19 06:31:21
【问题描述】:

我正在尝试使用 WPF 中的按钮读取 C# 中的 XML。 我有这个 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<date>
    <Disciplina nume="Disc1" cadru="Cadru1">
        <Student>
            <Nume>Student1</Nume>
            <Nota>9</Nota>
        </Student>
    </Disciplina> 
</date>

在阅读按钮我有这个代码:

XmlTextReader rd = new XmlTextReader(@"Test.xml");
string dnume = "", dcadru = "", snume = "",snota="", element = "";

while ( rd.Read() )
{
    switch (rd.NodeType)
    {
        case XmlNodeType.Element:
            element = rd.Name;
            break;

        case XmlNodeType.Text:
            if (element == "Disciplina")
            {
                dnume = rd.GetAttribute("nume");
                dcadru = rd.GetAttribute("cadru");
            }
            else
                if (element == "Student")
                {

                }
            break;
        case XmlNodeType.EndElement:
            if (rd.Name == "Student1")
            {
                MessageBox.Show("");
            }
            break;
    }
}
rd.Close();

问题是我不知道如何从 Student 节点读取信息。你能帮帮我吗?

【问题讨论】:

  • 有什么理由你真的需要使用XmlTextReader?只加载XDocument... 要简单得多
  • 我需要使用它,因为这是我在大学使用的。是考试的东西。

标签: c# xml


【解决方案1】:

如果您确实需要使用XmlReader 类,您可以在控制台应用程序中使用如下代码:

var nestedLevel = 0;
var studentNestedLevel = 0;

using (var reader = XmlTextReader.Create(@"Test.xml"))
{
    while (reader.Read())
    {
        switch (reader.NodeType)
        {
            case XmlNodeType.Element:
                nestedLevel++;
                if (studentNestedLevel > 0)
                    Console.Write("{0}: ", reader.Name);
                if (reader.Name.ToLower() == "student")
                    studentNestedLevel = nestedLevel;
                break;

            case XmlNodeType.Text:
                if (studentNestedLevel > 0)
                    Console.WriteLine("{0}", reader.Value);
                break;

            case XmlNodeType.XmlDeclaration:
            case XmlNodeType.ProcessingInstruction:
                if (studentNestedLevel > 0)
                    Console.WriteLine("{0}: {1}", reader.Name, reader.Value);
                break;

            case XmlNodeType.Comment:
                break;

            case XmlNodeType.EndElement:
                nestedLevel--;
                if (reader.Name.ToLower() == "student")
                    studentNestedLevel = 0;
                break;
        }
    }
}

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多