簡體   English   中英

從XML文件讀取C#

[英]C# reading from a XML file

我正在嘗試使用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();

問題是我不知道如何從學生節點讀取信息。 你能幫助我嗎?

如果您確實需要使用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;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM