-2
<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# 实现这一点?

4

2 回答 2

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 几天.. 和 selectSingleNode 日期时间。

            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();
        }

希望对您有所帮助..如果您有任何问题,请告诉我..

于 2013-02-27T06:30:01.633 回答
0

你试过什么?

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

XDocument document = XDocument.Load(XMLPATH);
IEnumerable<XElement> day = document.Elements("Day");
于 2013-02-27T06:09:57.287 回答