C# 从 XML 文件中读取 [英] C# Reading from XML files

查看:41
本文介绍了C# 从 XML 文件中读取的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个从 XML 文件读取的应用程序.但我有一个问题.我的 XML 文件如下所示:

I am developing an application that reads from XML files. But I am having a probling. My XML file looks like this:

<variable>
  <varName>Love</varName>
  <type>int</type>
  <value>0</value>
</variable>

我是这样读的:

XmlDataDocument xmldoc = new XmlDataDocument();
XmlNodeList xmlnode;
FileStream fs = new FileStream(fName, FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
xmlnode = xmldoc.GetElementsByTagName("variable");
for (int i = 0; i <= xmlnode.Count - 1; i++)
{
    Variable elem = new Variable();

    for (int j = 0; j < xmlnode[i].ChildNodes.Count; j++)
    {
        if (xmlnode[i].ChildNodes.Item(j).Name == "varName")
            elem.varName = xmlnode[i].ChildNodes.Item(j).InnerText;

        if (xmlnode[i].ChildNodes.Item(j).Name == "type")
        {
            if (xmlnode[i].ChildNodes.Item(j).InnerText == "int")
                elem.type = VariableType.INT;

            if (xmlnode[i].ChildNodes.Item(j).InnerText == "bool")
                elem.type = VariableType.BOOL;
        }

        if (xmlnode[i].ChildNodes.Item(j).Name == "value")
            elem.value = xmlnode[i].ChildNodes.Item(j).InnerText;
    }
}

在这段代码之后,我应该得到了我的 elem.name="Love" elem.value=0 elem.type=INT但相反,我有四个 elem 变量,首先具有我想要的其他值,type="INT" others (name, value) =null.有任何想法吗.提前致谢.

After this code I should have got my elem.name="Love" elem.value=0 elem.type=INT But instead I have four elem variables first having values I want others with type="INT" others (name, value) =null. Any IDEAS. Thanks in advance.

推荐答案

老实说,学习 LINQ to XML 是值得的.重构 1000 行代码要容易得多,而且不会花很长时间.

Honestly it would be worth your while learning LINQ to XML. It's much easier and wouldn't take long to refactor your 1000 lines.

var map = new Dictionary<string, VariableType>()
{
    { "int", VariableType.INT },
    { "bool", VariableType.BOOL },
};

var variables =
    XDocument
        .Load("fname")
        .Root
        .Elements("variable")
        .Select(x => new Variable()
        {
            varName = x.Element("varName").Value,
            type = map[x.Element("type").Value.ToLower()],
            value = x.Element("value").Value,
        })
        .ToList();

就是这样.

这篇关于C# 从 XML 文件中读取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆