c# - 如何使用 XMLDocument 类从 C# 中的 XML 文件获取数据?

标签 c# xml xmldocument

大家晚上好,周末愉快!

我一整天都在努力理解如何解析我的简单 XML 文件,这样我就可以充分理解它来编写我想从事的个人项目。

我一直在阅读本网站和其他网站上的文章,但无法超越我所在的位置:(

我的 XML 文档是 ...

<XML>
  <User>
    <ID>123456789</ID>
    <Device>My PC</Device>
  </User>
  <History>
    <CreationTime>27 June 2013</CreationTime>
    <UpdatedTime>29 June 2013</UpdatedTime>
    <LastUsage>30 June 2013</LastUsage>
    <UsageCount>103</UsageCount>
  </History>
  <Configuration>
    <Name>Test Item</Name>
    <Details>READ ME</Details>
    <Enabled>true</Enabled>   
  </Configuration>
</XML>

我正在尝试获取详细信息元素中的值(自述)。下面是我的代码

// Start Logging Progress
Console.WriteLine("Test Application - XML Parsing and Creating");
Console.ReadKey();

// Load XML Document
XmlDocument MyDoc = new XmlDocument();  MyDoc.Load(@"E:\MyXML.XML");

// Select Node
XmlNode MyNode = MyDoc.SelectSingleNode("XML/Configuration/Details");

// Output Node Value
Console.WriteLine(String.Concat("Details: ", MyNode.Value));

// Pause
Console.ReadKey();

我的控制台应用程序正在运行并输出“Target:”但没有提供元素中的详细信息。

有人可以看出为什么会这样吗,如果我完全不在状态,也许可以给我建议?我以前没有阅读 XML 文件的知识;因此我现在在哪里 :)

谢谢!汤姆

最佳答案

用你的 XPATH 表达式

// Select Node
XmlNode MyNode = MyDoc.SelectSingleNode("XML/Configuration/Details");

您选择了一个元素,因此 MyNode 的类型将为 XmlElementXmlElementValue 始终为 null (参见 MSDN )所以你需要使用 XmlElement.InnerTextXmlElement.InnerXml不是。

因此将您的代码更改为

// Output Node Value
Console.WriteLine(String.Concat("Details: ", MyNode.InnerText));

或者您可以使用 XPATH text() 函数选择元素的内容,在这种情况下,MyNode 将是 XmlText,您可以通过 获取它的值>值(value):

// Select Node
XmlNode MyNode = MyDoc.SelectSingleNode("XML/Configuration/Details/text()");

// Output Node Value
Console.WriteLine(String.Concat("Details: ", MyNode.Value));

作为旁注,如果您正在学习 C# 中的 XML 操作,您应该查看 LINQ to XML这是在 C# 中使用 XML 的另一种/更新的方式。

关于c# - 如何使用 XMLDocument 类从 C# 中的 XML 文件获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17383387/

相关文章:

javascript - 在 View 之间传递值 MVC5

java - 使用 DOM Android 从 Xml 读取 UTF8 和 Cp1256

c# - 在 C# 中解码 CDATA 部分

c# - 如何将 XMLDocument 类型转换为字符串以便在标签中显示结果

c# - 为什么这个服务是 "not responding to the start or control request in a timely fashion"?

c# - 如何将char数组转换为int?

android - 无法解析 AGPBI : {"kind" :"error" ,"text":"String types not allowed

javascript - openui5/sapui5 : Change parts of a page controlled by router

c# - 为什么 XmlDocument.GetElementById 始终返回 null?

c# - 如何从 Windows Phone 应用程序启动 IE7?