使用C#读取XML文件

时间:2013-02-27 06:03:18

标签: c# xml

<Day>
<Monday>true</Monday>
<Tuesday>false</Tuesday>
<Wednesday>true</Wednesday>
<Thursday>false</Thursday>
<Friday>true</Friday>
<Saturday>false</Saturday>
<Sunday>true</Sunday>
</Day>
<Time>
<dateTime>12:21</dateTime>
</Time>

我需要阅读上面的xml文件来获取日期和时间,将数据提取到一个变量。如何使用c#实现这一目标?

2 个答案:

答案 0 :(得分:1)

我提供了一个控制台程序来从字符串加载XML ..您也可以从提供文件路径的文件加载..(我也提到了这个声明)..

这是你的XML:

string xml = @"<testxml><Day>
<Monday>true</Monday>
<Tuesday>false</Tuesday>
<Wednesday>true</Wednesday>
<Thursday>false</Thursday>
<Friday>true</Friday>
<Saturday>false</Saturday>
<Sunday>true</Sunday>
</Day>
<Time>
<dateTime>12:21</dateTime>
</Time>
</testxml>";

现在声明XmlDocument()并将xml加载到其中..

        XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml(xml);
        //xDoc.Load(xmlpath);

现在您的xml文档已准备就绪.. xDoc.Load(xmlpath);可以从文件路径加载。

现在为要访问的节点提供xpath ..使用nodeList(SelectNodes)或仅使用一个节点...使用selectSingleNode:

我正在使用selectNodes for days ..并选择SingleNode作为datetime。

            string xpath = "/testxml/Day/*";
            XmlNodeList xNode = xDoc.SelectNodes(xpath);

            foreach (XmlNode node in xNode)
            {
                string day = node.LocalName;
                Console.WriteLine(day + ", value=\"" + node.InnerText + "\"");
            }

以上代码打印节点名称(即日期及其值true / false)

现在让我们打印日期时间值:

            xpath = "/testxml/Time/dateTime";
            XmlNode node1 = xDoc.SelectSingleNode(xpath);
            Console.WriteLine(node1.LocalName + ", value=\"" + node1.InnerText + "\"");

这是使用XML DOM的简单示例:)

现在整个代码:

     static void Main(string[] args)
        {
            string xml = @"<testxml><Day>
<Monday>true</Monday>
<Tuesday>false</Tuesday>
<Wednesday>true</Wednesday>
<Thursday>false</Thursday>
<Friday>true</Friday>
<Saturday>false</Saturday>
<Sunday>true</Sunday>
</Day>
<Time>
<dateTime>12:21</dateTime>
</Time>
</testxml>";

            XmlDocument xDoc = new XmlDocument();
            xDoc.LoadXml(xml);
            //xDoc.Load(xmlpath);

            string xpath = "/testxml/Day/*";
            XmlNodeList xNode = xDoc.SelectNodes(xpath);

            foreach (XmlNode node in xNode)
            {
                string day = node.LocalName;
                Console.WriteLine(day + ", value=\"" + node.InnerText + "\"");
            }

            xpath = "/testxml/Time/dateTime";
            XmlNode node1 = xDoc.SelectSingleNode(xpath);
            Console.WriteLine(node1.LocalName + ", value=\"" + node1.InnerText + "\"");
            Console.ReadLine();
        }

希望有帮助..如果您有任何疑问,请告诉我。

答案 1 :(得分:0)

你有什么尝试?

看一下XDocument类。在那里你可以做类似的事情

XDocument document = XDocument.Load(XMLPATH);
IEnumerable<XElement> day = document.Elements("Day");