使用C读取XML文件#

使用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#实现这个?使用C读取XML文件#

+0

请参阅http://*.com/questions/2565064/reading-an-xml-file-with-net?rq=1 – 2013-02-27 06:05:05

+0

是它整个XML,或只是其中的一部分?预期的结果是什么?应该提取哪一天或哪几天?你有什么尝试? – 2013-02-27 06:34:19

+0

你问的问题让别人完成你的工作... – giammin 2013-03-05 15:22:54

我提供一个控制台程序加载从字符串的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 ..或者使用的selectSingleNode使用节点列表(的SelectNodes)或只是一个节点..:

我使用的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 + "\""); 
      } 

上面的代码打印节点名称(即天,并将其值真/假)

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

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

希望它有帮助..让我知道如果您有任何问题..

+0

谢谢。这会做。 – user004 2013-02-27 11:20:43

你有什么尝试?

看看类XDocument。在那里,你可以这样做

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

我没有尝试,因为我是新来的C#。我正在寻找想法。谢谢你的回答 – user004 2013-02-27 06:13:05