如何通过c#读取XML,例如<;模式名称=“;文本“>;

本文关键字:模式 gt 文本 lt 何通过 读取 XML 例如 | 更新日期: 2023-09-27 18:30:08

我想知道如何通过c#获取属性"text"?

示例xml:

<?xml version="1.0" encoding="utf-8" ?>
<Model Name="modelname">
    <Mode Name="text">
        <Class>Class1</Class>
            </Mode>
    </Model>

我尝试使用XMLReader(来自msdn的示例)解析这个xml:

 while (reader.Read())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.Write("<" + reader.Name+"");
                    Console.WriteLine(str);
                    if (reader.Name =="Mode")
                    {
                        namemode = true;       
                    }
                    if (namemode)
                    {
                        if (reader.Name == element) 
                        {
                            elementExists = true;
                        }  
                    }  
                   // Console.WriteLine(">");
                    break;
                case XmlNodeType.Text: 
                    Console.WriteLine(reader.Value);
                    if (elementExists)
                    {
                        values.Add(reader.Value);
                        elementExists = false;
                    }
                    break;
            }
        }

也许我应该使用XMLDocument来做这件事?谢谢

如何通过c#读取XML,例如<;模式名称=“;文本“>;

您可以使用XDocumentLINQ

您需要包含System.Xml.Linq.XDocument命名空间。

然后你可以做一些类似的事情:

 XDocument document = XDocument.Load(filePath);
 var modes = (from modes in document.Root.Descendants("Mode")
              select modes.Attribute("Name").Value).ToList();

像这样:

const string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<Model Name=""modelname"">
<Mode Name=""text"">
<Class>Class1</Class>
</Mode>
</Model>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
Console.WriteLine(doc.DocumentElement["Mode"].Attributes["Name"].Value);