首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读取XML文件并将信息放入对象中?

如何读取XML文件并将信息放入对象中?
EN

Stack Overflow用户
提问于 2020-06-17 20:47:11
回答 3查看 55关注 0票数 0

我有一个函数,可以将列表中的所有对象信息写入到XML文件中。

代码语言:javascript
运行
复制
    public static void UpdateXML()
    {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        XmlWriter Writer = XmlWriter.Create("path", settings);
        Writer.WriteStartDocument();
        Writer.WriteStartElement("Accounts");
        foreach (var acc in Bank.Bankaccountlist)
        {
            Writer.WriteStartElement("Account");
            Writer.WriteAttributeString("ID", acc.id.ToString());
            Writer.WriteElementString("Name", acc.GetName());
            Writer.WriteElementString("Lastname", acc.GetLastname());
            Writer.WriteElementString("Balance", acc.GetBalance().ToString());
            Writer.WriteEndElement();
        }
        Writer.WriteEndElement();
        Writer.Flush();
        Writer.Close();
    }

现在,当程序关闭时,所有数据仍在文件中。因此,一旦程序再次启动,它就应该再次创建所有旧对象(创建Account对象将自动将其放入列表中)。

谁能告诉我这是怎么可能的?

请注意int iddouble balance

EN

回答 3

Stack Overflow用户

发布于 2020-06-17 13:13:13

要根据您的实际解决方案给出答案,您应该使用XmlReader作为XmlWriter的对应物。对于字符串以外的每个属性类型,都应该使用Convert或适当的TryParse方法。但是你可以看看XmlSerializer,它正是针对你的用例的。

https://docs.microsoft.com/en-us/dotnet/api/system.xml.serialization.xmlserializer?view=netcore-3.1

票数 0
EN

Stack Overflow用户

发布于 2020-06-17 21:20:42

您还必须将o jet的每个部分标记为xml属性,以便将对象序列化为xml。然后,您可以遍历xml目录中的文件,并使用xml阅读器对它们进行反序列化。我相信有一个nuget包可以帮助你做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2020-11-19 13:01:37

我得到了以下解决方案:

代码语言:javascript
运行
复制
public static void ReadXML()
{
    DataSet xmlData = new DataSet();
    xmlData.ReadXml("path");

    foreach (DataTable table in xmlData.Tables)
    {
        foreach (DataColumn column in table.Columns)
        {
            foreach (DataRow row in table.Rows)
            {
                Account newAcc = new Account(row.ItemArray[0].ToString(), row.ItemArray[1].ToString(), Convert.ToDouble(row.ItemArray[2]), Convert.ToInt32(row.ItemArray[3]));
            }
        break;
        }
    }
}

这是可以100%改进的,但它是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62429372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档