XmlLite是一个简易的XML Parser,使用COM组件方式实现,在Vista及Server2003sp2以后都有提供。头文件和库文件在Windows SDK中,一般随Visual Studio 2005及以后安装都会有,如果另外装了Windows SDK也有提供。
首先是引用:
#include <xmllite.h>
#pragma comment (lib, "xmllite.lib")
1. XmlLite解析XML文件
微软的XmlLite样例使用了ATL库里的CComPtr<>模板类来简化操作,不会用orz 实际上直接使用IXmlReader接口来做也是可以的。但是需要自己在最后手动调用释放方法:IXmlReader::Release()。
这里先说从XML文件来解析,XmlLite使用了不知道Windows SDK在哪提供的IStream接口,可以直接参照样例里的办法来创建一个来自文件的IStream对象,即使用Windows Shell的函数:SHCreateStreamOnFile()。实际上这个函数可以创建一个新文件并写入,具体可以调整第二个flag参数。初始化XmlReader的大概代码如下:
IStream* pFileStream = NULL;
IXmlReader* pReader = NULL;
::SHCreateStreamOnFile("filename.txt", STGM_READ, &pReader);
CreateXmlReader(__uuidof(IXmlReader), (void**)&pReader, NULL);
pReader->SetInput(pFileStream);
如果是写入XML
HRESULT hr = S_OK;
IStream *pOutFileStream = NULL;
IXmlWriter *pWriter = NULL;
//Open writeable output stream
if (FAILED(hr = SHCreateStreamOnFile(szFilePath, STGM_CREATE | STGM_WRITE, &pOutFileStream)))
{
wprintf(L"Error creating file writer, error is %08.8lx", hr);
HR(hr);
}
if (FAILED(hr = CreateXmlWriter(__uuidof(IXmlWriter), (void**) &pWriter, NULL)))
{
wprintf(L"Error creating xml writer, error is %08.8lx", hr);
HR(hr);
}
IXmlReader接口的方法实际并不复杂,负责读取XML文件的只有Read()和ReadValueChunk()两个,实际只有前者有点用。通过不停地调用Read()方法,可以知道当前XmlLite走到了哪个XML元素上,然后调用一系列GetXXX方法就能获得当前元素的文本、属性值、CDATA等等了。
XmlNodeType nodeType;
while (S_OK == pReader->Read(&nodeType)) {
switch (nodeType) {
// analyze type of the node
}
}
Read方法可以获知当前节点是一个什么节点,通过XmlNodeType的枚举类型来看即可:是XML Declaration?Element?EndElement(即</element_name>)等等。
但是每个Read会跳过当前元素的所有属性,继续下一个元素,因此XmlReader不能还原XML的树形结构,只能单向往前。
当走到一个元素以后可以使用MoveToAttributeByName或者MoveToFirstAttribute等,然后再使用GetValue来获取属性的值。另外由于移动了XmlReader,因此需要使用MoveToElement回到元素上,再继续下一次Read().
const TCHAR* szValue = NULL;
pReader->GetLocalName(&szValue, NULL); // get element name
pReader->MoveToFirstAttribute(); // move reader to the first attribute of this xml element
pReader->GetValue(&szValue, NULL); // get attribute value
pReader->MoveToElement(); // move back to element from some attribute
相关推荐
VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法
1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..
XML开发库之XmlLite
MSDN描述:XmlLite 是一个快速安全的非缓存只进 XML 分析器,它允许开发人员生成高性能的 XML 应用程序。 XmlLite 可以使用能够使用动态链接库 (DLL) 的任何语言;Microsoft 建议使用 C++。库下载地址:http://msdn.microsoft.com/en-us/library/ee388577(v=VS.85).aspx库文档:http://msdn.microsoft.com/en-us/library/ms752872(v=VS.85).aspx
VSCode + Clangd 配置避坑实录:从‘红波浪线’到完美代码提示的完整心路
本文详细记录了VSCode与Clangd配置过程中的常见问题及解决方案,从编译数据库生成到参数调优,帮助C++开发者快速解决代码提示失效、头文件找不到等问题,实现完美代码补全体验。重点介绍了Clangd与LLDB的集成配置及性能优化技巧,适用于Linux和跨平台开发环境。
XmlLite
用于本机 C++ 的小巧快捷的 XML 分析器Kenny Kerr本文讨论: XmlLite 与其他可用 XML 分析器的比较 XmlLite 的优势和限制 读取和写入 XML XML 安全注意事项 本文使用了以下技术: XML、C++ 目录 为什么推出新的 XML 分析器? COM“Lite” 读取 XML 写入 XML
PCIe链路训练Recovery状态机:从RcvrLock到链路稳定的关键路径
本文深入解析PCIe链路训练中的Recovery状态机,特别是RcvrLock状态的关键作用。从Block对齐、均衡预设值应用到状态转移条件,详细介绍了确保链路稳定的技术要点,并提供了高速率下的特殊处理方法和常见问题排查指南,帮助工程师解决PCIe链路不稳定问题。
什么是Claude 的 Agent Skills?
摘要: Claude的Agent Skills功能支持通过结构化技能包(含指令、脚本、工具)实现任务自动化,如数据分析、文档生成等。核心能力包括:1)技能包管理(如Python脚本+模板);2)工具调用(API/数据库交互);3)子代理协作(拆分复杂任务)。快速上手步骤:创建技能包(如Excel报表生成)、配置工具权限、触发执行;支持多代理并行处理(如SQL查询+可视化)。关键技巧:工具需明确定义参数、利用子代理共享上下文、注重权限管控。官方文档与社区资源提供进阶指导,使Claude成为可编程的数字助手。
VC++中操作XML(MFC、SDK)
<br />XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini。VC++里操作XML有两个库可以用:MSXML和XmlLite。MSXML又细分了两种接口:DOM和SAX2。XP没自带有XmlLite,只自带有2.x、3.x版的MSXML,不支持SAX2(需要MSXML 4.0以上),所以优先使用DOM。<br />DOM是以COM形式提供的,VC++里调用DOM可以分3种方法:<br />1、MFC里用CComP
Win10 环境下 ISE14.7 iMPACT 闪退的 DLL 修复方案 - FPGA 开发实战
本文详细介绍了在Win10系统下解决ISE14.7 iMPACT工具闪退问题的DLL修复方案,特别针对FPGA开发中常见的兼容性问题。通过替换关键DLL文件,有效解决了iMPACT在生成PROM文件时的崩溃问题,并提供了详细的步骤说明和注意事项,帮助开发者提升工作效率。
下载 XmlLite ( 包括:xmlLite.h , xmlLite.lib , xmlLite.dll )
XmlLite 是微软在在Vista中介绍的一个轻量级的XML解析引擎,非常好用。XmlLite 是可以运行在 XP/2000和 2003 系统下的,只需要有下面这3个文件:下载 XmlLite ( 包括:xmlLite.h , xmlLite.lib , xmlLite.dll ) 下载地址:http://www.domolo.com/tech_center/xmllit
【人工智能】大模型可以分为L0层:基础大模型/通用大模型、L1层:行业大模型、L2层:细分场景模型三个层级
大模型确实可以分为L0、L1、L2三个层级,这种分层架构不仅有助于提升模型的泛化能力和适应性,还能更好地满足不同行业和场景的需求。华为盘古大模型的分层架构(L0、L1、L2)在多个证据中得到了详细描述和验证。例如,华为云盘古大模型3.0明确分为L0基础大模型、L1行业大模型和L2场景模型三层架构。此外,其他来源也一致支持这一分层架构,如用友网络的企业服务大模型、智谱AI的GLM-4系列等。
基于 Mask R-CNN 的实例分割:从零开始构建一个强大的分割模型
在本文中,我们将介绍如何使用 Mask R-CNN(Region-based Convolutional Networks with Masks)实现实例分割。实例分割是计算机视觉中的一种任务,旨在识别并分割图像中的各个对象。我们将讨论如何准备数据集、配置 Mask R-CNN 模型并在自定义数据集上进行训练。
Windows 通用平台 XmlLite 示例:用 IXmlReader / IXmlWriter / IXmlWriterLite 解析与生成 XML
本文基于 Windows-universal-samples 仓库中的 `Samples/XmlLite` 示例,完整讲解 Windows 平台上 XmlLite API 的三个核心场景:使用 `IXmlReader` 流式读取 XML 文件并打印节点、使用 `IXmlWriter` 向文件写入各种 XML 节点类型、使用 `IXmlWriterLite` 完成读取到写入的透传转换。读完本文,你可
Allegro 中复制一部分PCB到另一个PCB中去
引言:自从学了allegro后,我每天快乐地再拉线,一开心肯定出事情。不料今天一高兴,把本来在5层的铜皮直接在4层画起来了。不过,幸好我知道换层,才省了又要画铜皮的时间。好了,开干,如果要将其他层的铜皮换到想要换到的层上,就需要这个命令。
如何用一个分数预测公司会不会破产?Altman Z-Score 模型原理与 Python 实现指南
做信用审查时,业务分析师常被问到一个很“狠”的问题:这个客户的信用风险,能不能用一个数字说清楚?Altman Z-Score 就是为这类问题而生的经典工具——它把财报里 4 个关键财务比率加权合成一个 Z 值,不仅能划分风险分区,还能直接映射到 AAA~D 的传统信用评级。这篇文章先给出判定标准,再拆解每个指标代表什么、权重为什么是那个数,最后带你在 Python 里完成最小实现,并用回测验证它的
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
Windows-classic-samples 解析:用 XmlLite 在带命名空间的 XML 中写出无命名空间属性
本文围绕 Windows-classic-samples 仓库中的 `XmlLiteNamespaceWriter3` 示例,讲解如何使用 XmlLite(`IXmlWriter`)在声明了默认命名空间的 XML 文档里,写出一个**不带任何命名空间限定(namespace qualification)的属性**。通过通读示例源码([XmlLiteNamespaceWriter3.cpp](htt
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
3万+



被折叠的 条评论
为什么被折叠?



