从文件读取 XML 数据

您所在的位置:网站首页 xml格式怎么读 从文件读取 XML 数据

从文件读取 XML 数据

2024-07-02 14:37| 来源: 网络整理| 查看: 265

使用 Visual C++ 从文件读取 XML 数据 项目07/17/2023

本文介绍如何使用 XmlTextReader 类从文件读取 XML 数据。

原始产品版本: Visual C++ 原始 KB 编号: 815658

摘要

本文介绍如何使用 XmlTextReader 类从文件读取 XML 数据。 类 XmlTextReader 提供 XML 数据的直接分析和标记化。 除了命名空间以外,类 XmlTextReader 还实现由万维网联合会定义的 XML 规范中的 XML 1.0 规范, (W3C) 。 本文介绍如何对 XML 数据执行快速令牌化流访问,而不是使用对象模型,例如 XML 文档对象模型 (DOM) 。

有关本文的 Microsoft Visual C# .NET 版本,请参阅 如何使用 Visual C# 从文件读取 XML。

本文介绍了以下 Microsoft .NET Framework 类库命名空间:System.xml

要求

本文假定你熟悉以下主题:

XML 术语 如何创建以及如何读取 XML 文件

以下列表概述了所需的建议的硬件、软件、网络基础结构和 Service Pack:

Microsoft Visual Studio .NET Microsoft Visual Studio 2005 从文件读取 XML 数据

本文中的示例使用名为 Books.xml的文件。 可以创建自己的 Books.xml 文件,也可以使用 Microsoft .NET 软件开发工具包 (SDK 附带的示例文件) 快速入门。 必须将 Books.xml 文件复制到项目文件夹。

若要从文件读取 XML 数据,请执行以下步骤:

启动 Visual Studio .NET 2002、Visual Studio .NET 2003 或 Visual Studio 2005。

在"文件"菜单上,指向"新建",然后单击"项目"。

此时将显示“新建项目”对话框。

在“ 项目类型”下,单击“ Visual C++ 项目”。

注意

在 Visual Studio 2005 中, Visual C++ 项目 更改为 Visual C++。

如果使用 Visual Studio .NET 2002,请单击“ 模板”下的“ 托管 C++ 应用程序 ”。

如果使用 Visual Studio .NET 2003,请单击“ 模板”下的“ 控制台应用程序” (.NET) 。

如果使用的是 Visual Studio 2005,请单击“ 模板” 下的“CLR 控制台应用程序 ”。

在“ 名称 ”框中,键入 Q815658,然后单击“ 确定”。

在项目中添加对 System.xml.dll 的引用。 有关如何添加对托管 Visual C++ 项目的引用的详细信息,请参阅 添加对托管 Visual C++ 项目的引用

在命名空间中指定 using 指令, System::Xml 如下所示:

using namespace System::Xml;

这样做可以不必稍后在代码中限定 XmlTextReader 类声明。 必须在任何其他声明之前使用 using 指令。

创建 对象的实例 XmlTextReader 。 XmlTextReader使用 .xml 文件填充 对象。

通常, XmlTextReader 如果必须访问原始 XML 数据而不需要 DOM 开销,则使用 类。 因此, XmlTextReader 类提供了一种更快的 XML 数据读取方法。 类 XmlTextReader 具有指定 XML 数据位置的不同 constructors 。

以下代码创建 类的实例, XmlTextReader 然后加载 Books.xml 文件。 将以下代码添加到 _tmain 函数:

XmlTextReader* reader = new XmlTextReader ("books.xml");

注意

在 Visual C++ 2005 中,函数_tmain更改为 main 函数。

通读 XML 数据。

注意

此步骤演示外部 while 循环。 此步骤后面的两个步骤演示如何使用 while 循环读取 XML 数据。

创建 XmlTextReader 对象后,使用 Read 方法读取 XML 数据。

Read 方法继续按顺序在 .xml 文件中移动,直到 Read 方法到达文件末尾。 当 Read 方法到达文件末尾时,Read 方法返回 false。

while (reader->Read()) { // Do some work here on the data. Console::WriteLine(reader->Name); }

检查节点。

为了处理 XML 数据,每个记录都有一个节点类型,该类型可通过 属性确定 NodeType 。 属性 Name 和 Value 属性返回当前节点或当前记录的以下信息:

节点名称,即元素名称和属性名称。 节点值,即节点文本。

枚举 NodeType 确定节点类型。 下面的代码示例显示元素的名称和文档类型。 以下代码示例忽略元素属性:

while (reader->Read()) { switch (reader->NodeType) { case XmlNodeType::Element: // The node is an element. Console::Write(""); break; case XmlNodeType::Text: //Display the text in each element. Console::WriteLine (reader->Value); break; case XmlNodeType::EndElement: //Display the end of the element. Console::Write(""); break; } }

检查属性。

元素节点类型可以包含与元素节点类型关联的属性节点列表。 方法 MovetoNextAttribute 按顺序在 元素中的每个属性之间移动。 HasAttributes使用 属性测试节点是否具有任何属性。 属性 AttributeCount 返回当前节点的属性数。

while (reader->Read()) { switch (reader->NodeType) { case XmlNodeType::Element: // The node is an element. Console::Write(""); break; case XmlNodeType::Text: //Display the text in each element. Console::WriteLine (reader->Value); break; case XmlNodeType::EndElement: //Display the end of the element. Console::Write(""); break; } }

保存解决方案。 生成解决方案。

按 CTRL+F5 运行示例应用程序。

在 Visual Studio .NET 2002 或 Visual Studio .NET 2003 中查看完整的代码列表 #include "stdafx.h" #include #using #using using namespace System; using namespace System::Xml; void _tmain(void) { XmlTextReader* reader = new XmlTextReader ("books.xml"); while (reader->Read()) { switch (reader->NodeType) { case XmlNodeType::Element: // The node is an element. Console::Write(""); break; case XmlNodeType::Text: //Display the text in each element. Console::WriteLine (reader->Value); break; case XmlNodeType::EndElement: //Display the end of the element. Console::Write(""); break; } } Console::ReadLine(); }

注意

必须在 Visual C++ 2005 中 (/clr:oldSyntax) 添加公共语言运行时支持编译器选项,才能成功编译前面的代码示例。 若要在 Visual C++ 2005 中添加公共语言运行时支持编译器选项,请执行以下步骤:

单击“ 项目”,然后单击“ 属性”。

注意

是项目名称的占位符。

展开 “配置属性”,然后单击“ 常规”。

单击以选择 公共语言运行时支持、旧语法 (/clr:oldSyntax) 在右窗格中 的“公共语言运行时支持 项目设置”,单击“ 应用”,然后单击“ 确定”。

有关公共语言运行时支持编译器选项的详细信息,请参阅 /clr (公共语言运行时编译) 。

这些步骤适用于整篇文章。

查看示例输出 The Autobiography of Benjamin Franklin Benjamin Franklin 8.99 The Confidence Man Herman Melville 11.99 The Gorgias Plato 9.99 疑难解答

运行示例应用程序时,可能会收到以下错误消息:

类型为 System.Xml 的未经处理的异常。XmlException 在 System.xml.dll 其他信息中发生:系统错误。

References

有关使用 XmlReader 读取 XML 的详细信息,请参阅 使用 XmlReader 读取 XML。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3