c# - 将 XML 数据读入 C# 应用程序

标签 c# xml xml-serialization

我需要创建一个应该如下所示的 xml 文件。

<Event id="Date - Event Name - Event Type">      
    <DogNumber id="dog id number">           
        <dogName id-"dog id number">dog name</dogName>               
        <dogBreed>dog breed</dogBreed>      
    </DogNumber>
</Event>

然后它会针对另一个事件再次重复,除了元素的不同值和属性。

<Event id="Date - Event Name - Event Type">      
    <DogNumber id="dog id number">           
        <dogName id-"dog id number">dog name</dogName>               
        <dogBreed>dog breed</dogBreed>      
    </DogNumber>
</Event>

我是使用 C# 创建 XML 文件的新手,并且无法正确地将属性添加到元素并获得与上面所示相同的父节点和子节点。我需要能够从我的 C# 应用程序查看此文件,并能够根据特定事件读取上面列出的所有值,然后读取每个事件中的特定狗。选择哪个事件和选择哪只狗的标准可能取决于用户在 ComboBox 中的输入。我的计划是使用 getElementById 方法。然而,我见过如此多不同的方法来做到这一点,以至于我无法决定什么是最好和最有效的方法。

最佳答案

我认为读取/写入该 xml 文件的最简单方法是使用 XMLSerializer。这种方法还使您能够轻松绑定(bind)到数据(如果您将 WPF 用于 UI)

创建可序列化类:

    public class Event
    {
        [XmlAttribute]
        public string id { get; set; }

        [XmlElement]
        public DogNumber DogNumber { get; set; }
    }

    public class DogNumber
    {
        [XmlAttribute]
        public string id { get; set; }

        [XmlElement]
        public dogName dogName { get; set; }

        [XmlElement]
        public string dogBreed { get; set; }
    }

    public class dogName
    {
        [XmlAttribute]
        public string id { get; set; }

        [XmlTextAttribute]
        public string value { get; set;  }
    }

然后使用 XmlSerializer 反序列化(例如使用文件):

        Stream input = File.OpenRead("C:\\test.xml");
        XmlSerializer serialier = new XmlSerializer(typeof(Event));
        Event newevent = serialier.Deserialize(input) as Event;
        input.Close();

关于c# - 将 XML 数据读入 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796730/

相关文章:

java - saxonica - 如何使用 XPath/XSLT fn :json-to-xml

c# - 如何使用 C# 将具有属性长度的 xml 空元素标记转换为开始标记和结束标记?

c# - 如何使用 XmlSerializer 创建 XmlRepository?

c# - Oracle .Net 托管数据访问错误 : Could not load type 'OracleInternal.Common.ConfigBaseClass' from assembly

c# - 将零数字添加到我的十进制值

c# - 带有双重检查锁定的单例 - 错误 "being used by another process"

Java - 转储到 XML

c# - XmlSerialize 枚举标志字段

c# - 使用 XmlSerializer 反序列化 xml 文件时出错

java - TSerializer 序列化器 = C# 中的 new TSerializer()