从文件读取 XML 数据 |
您所在的位置:网站首页 › xml格式怎么读 › 从文件读取 XML 数据 |
使用 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 |