IXMLDOMDOCUMENT 的appendchild,removechild返回E_FAIL

VC++中使用MSXML组件解析XML文件 本文还有配套的精品资源,点击获取 简介:在VC++开发环境中,使用MSXML组件可以有效地读取和操作XML文件。MSXML组件允许开发者通过COM接口与XML文档交互,支持创建 IXMLDOMDocument 对象来加载和解析XML数据。本文介绍如何通过包含 msxml2.h 头文件,链接 msxml2.lib 或 msxm... 阅读详情

IXMLDOMDOCUMENT 的appendchild,removechild返回E_FAIL,是的,这时候发现只能读DOM的内容,只要写入便会失败,原来WINDOWS在两个相关的处理器(如"Msxml2.XSLTemplate",以及则直接读取修改方式)内容同时处理时,XSLT处理器加载XML DOM后,应该此时对XML DOM进行了写保护(这和线程安全问题有些类似,但又不是线程安全问题)

 

例子代码:

 HRESULT LoaderXMLDocument(IXMLDOMDocument* pXMLDocument, IMoniker* pUrlMoniker, IMoniker* pxsltMoniker, IMoniker** pNewMoniker)
 {
  CComPtr<IXMLDOMDocument> pMSXSLTDoc;
  HRESULT hr = pMSXSLTDoc.CoCreateInstance(L"Msxml2.FreeThreadedDOMDocument");

  if(pMSXSLTDoc == NULL)
   return hr;

  CComPtr<IBindCtx> srpBindCtx;
  hr = ::CreateBindCtx(NULL, &srpBindCtx);   


  pMSXSLTDoc->put_async(VARIANT_FALSE);
  pMSXSLTDoc->put_resolveExternals (VARIANT_FALSE);

  CComQIPtr<IPersistMoniker> pMk = pMSXSLTDoc;
  hr = pMk->Load(FALSE, pxsltMoniker, srpBindCtx, STGM_READ);
  if(FAILED(hr))
  {
   return hr;
  }  

  CComPtr<IXSLTemplate> pXSLTemplate;
  hr = pXSLTemplate.CoCreateInstance(L"Msxml2.XSLTemplate");
  if(FAILED(hr))
  {
   return hr;
  }
  hr = pXSLTemplate->putref_stylesheet(pMSXSLTDoc);
  if(FAILED(hr))
  {
   return hr;
  }

  CComPtr<IXSLProcessor> pXSLProcessor;
  pXSLTemplate->createProcessor(&pXSLProcessor);

  pXSLProcessor->put_input(CComVariant(pXMLDocument));

 

  CComPtr<IDispatch> pDispDoc;
  GetHostDocumentDisp(&pDispDoc);
  if(pDispDoc)
  {
   pXSLProcessor->addObject(pDispDoc, CComBSTR(L"urn:editordocument"));
  }

  CComPtr<IDispatch> pDispView;
  GetHostViewDisp(&pDispView);
  if(pDispView)
  {
   pXSLProcessor->addObject(pDispView, CComBSTR(L"urn:editorview"));
  }
  

  VARIANT_BOOL bVar = VARIANT_FALSE;
  hr = pXSLProcessor->transform(&bVar);
  if(FAILED(hr))
  {
   //this is an error
  }

 

那么此时,pXSLProcessor相关的xslt相关调用的函数中,就不能在修改稿XML DOM了(比如pXMLDocument进行appendchild和removechild一类的写操作)

 

 

IXMLDOMDocument使用 使用 IXMLDOMDocument接口获取节点。 立即下载

相关推荐

MATLAB实战:64QAM通信系统仿真全流程解析(附误码率优化技巧)

本文提供了一份完整的64QAM通信系统MATLAB仿真实践指南。从系统架构设计、发射端格雷码映射与脉冲成形,到信道建模、接收端同步与均衡,详细解析了全链路实现流程。文章重点分享了误码率曲线与理论值偏差的排查清单和深度优化技巧,帮助工程师构建工业级精度的仿真模型,解决高阶调制系统仿真的核心难题。

jenkins8butler的博客 404

通过DOM动态删除多个节点报错原因理解

通过DOM动态删除多个节点报错原因理解 在DOM中,我们可以通过removeChild( )来删除元素的子节点,但有时当我们通过循环函数删除一个元素的多个子节点时,浏览器却显示: Failed to execute ‘removeChild’ on ‘Node’: parameter 1 is not of type ‘Node’. 这是什么原因呢?接下来分析几个可能常出现的错误写法. &lt...

shandamengcheng的博客 1568

【毕业设计】_基于STM32单片机的按摩椅( 原理图+源码)

按摩器系统基于STM32单片机设计,作为核心控制单元。系统配备了OLED显示屏、蓝牙模块、喇叭模块、播报模块和光电感应模块。光电感应器用于检测是否有人接近,同时,系统可以通过蓝牙接收控制指令并执行相应的操作。该系统支持40℃的热敷功能以及气囊按摩功能,具备温度显示功能,并且可以通过按键切换不同的按摩模式。当光电感应器检测到有人时,按摩椅会自动启动。使用DHT11传感器的红色按钮可以调整温度。

2401_85381100的博客 724

 IXML

IXML_Element *LastChange = ixmlNode_getFirstChild(property); IXML_NodeList *props = NULL; if (strncmp(LastChange->tagName, "LastChange", strlen("LastChange")) == 0){ ...

本博客仅供免费阅读,不提供咨询服务。请勿私信。 803

Silvaco TCAD 2018安装后,如何配置TonyPlot 5.0.22.R并解决绘图报错?

本文详细介绍了在Windows系统上安装Silvaco TCAD 2018后,如何正确配置TonyPlot 5.0.22.R并解决常见的绘图报错问题。内容包括版本兼容性分析、环境变量设置、常见错误解决方案以及性能优化建议,帮助用户顺利完成仿真结果的可视化工作。

weixin_31031711的博客 420

C++cgal库配置+VS2017

Cgal几何图形库在VS2017上的下载、安装与配置。想要一口气下载完所有安装配件的,可以去文章末尾的链接。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。

dsn3S的博客 1488

Delphi与XML

////////////////////////////////////////////////////////////////////////创建IXMLDOMDocument对象的三种方法:(1)[方法1] 直接创建 IXMLDOMDocument? , 例(1)?? uses msxml; ?? var DOC:IXMLDOMDocument;?? doc := CoDOMDocument.

迷茫 3626

SAP SEGW 事物码里的 Function Import

开放数据协议(OData)包括标准的 CRUD (创建、检索、更新和删除)操作,这些操作映射到 HTTP 方法的 POST、GET、PUT/MERGE 和 Delete 几类。此外,OData还支持进一步的服务操作:,这些操作可以由HTTP方法GET或POST调用,用于处理不能映射到标准 CRUD 操作的任何内容。通过在数据模型中创建 ,可以在 service Builder 中实现此类额外的服务操作。例如,您可以为以下自定义操作创建函数导入:Work Item confirmation检查航班的可用性虽然

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 992

IXMLDOMDocument 成員

IXMLDOMDocument 成員 (Microsoft.Office.Interop.InfoPath.Xml)此類型或成員為 Microsoft XML Core Services (MSXML) 5.0 物件或成員的Proxy。如需由此類型或成員所包裝之 MSXML 物件或成員的詳細資訊,請在 MSDN 上搜尋 Microsoft XML CoreServices (M

仓 702

基于STM32L4XX 、HAL库的TMC2209-LA-T步进电机驱动器驱动程序应用设计

/ R/W=0 表示写。uint32_t gconf_value = (0 << 0) // I_scale_analog: 禁用,使用UART控制电流。uint32_t ihold_irun = (8 << 0) // 保持电流 8/31 最大值。

PP_Cottage的博客 449

uniapp(全端兼容) - 实现点击输入框时完美顶起键盘,获取键盘高度动态计算顶起距离,解决软键盘弹出时输入框被覆盖问题,uniapp微信小程序/移动端h5网页/安卓苹果app(示例代码,一键复制

uniapp,支付宝微信小程序,移动端H5网页网站,软键盘弹出位置不对,软键盘挡住了输入框怎么办,获取键盘高度计算弹出距离,uniapp如何解决输入框input激活后键盘弹出遮挡问题,uniapp输入框偶尔被键盘遮挡,解决uniapp在App环境下输入框被软键盘遮挡的问题,uniapp 完美解决苹果和安卓input框遮挡兼容问题,uniapp输入框拉起软键盘时,输入框显示不全,被软键盘挡住一半,input被键盘遮挡的解决方案,软键盘遮挡输入框,uniapp软键盘顶不起来输入框,输入框没有被软键盘弹出来怎么办

✅ 精选推荐文章 1万+

DOM 读写XML文件

//以下是个人理解//定义智能接口指针#include#include_COM_SMARTPTR_TYPEDEF(IXMLDOMDocument,__uuidof(IXMLDOMDocument));_COM_SMARTPTR_TYPEDEF(IXMLDOMElement,__uuidof(IXMLDOMElement));_COM_SMARTPTR_TYPEDEF(IXMLDOMNodeLi

chang19的专栏 1125

Virtuoso 中的tech file 详细说明

工艺文件(Techfile)是集成电路设计中的核心配置文件,定义了从晶圆制造到版图验证全流程所需的工艺规则和图层属性。在Cadence Virtuoso平台中,Techfile作为连接设计与制造的桥梁,主要包含以下内容: 图层体系定义 金属层、介质层、多晶硅层等物理图层的编号、名称和显示属性 图层用途(DRAW、MASK等)及图层-用途组合(LPP)的优先级 设计规则约束 几何尺寸规则(最小线宽/间距) 包围和延伸规则 密度规则和特殊工艺规则(如天线效应) 器件定义 MOS管、电阻等器件的图层构成 电学参数

u013620135的博客 8124

XML 相关总结[转载]

XML 相关总结 经过昨天的学习,了解到DOM只是提供了一种解析XML的方式(接口),而DOM的接口与语言无关。对DOM接口的实现有微软的MSXML,Xerces-C(Apache),Java的XML4J等。下面对DOM和MSXML的几个接口分别介绍(网上资料,经整理):一.DOM的四个基本接口在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及N

阿蒙的专栏 1333

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

XML入门知识(二)——XML文档解析

本文介绍了利用微软COM方式解析XML文件的方法

_Santiago的博客 1597

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MSXML应用总结 开发篇(下)

<br />三、查询XML文档节点<br />这部分属于“读”XML文档并做节点遍历,由于担心加上实例会占用过多的篇幅影响阅读,先在这篇做方法总结,以后有时间再写一篇“实战篇”专门写个实例工程,可以有更完整的参考代码。<br /> <br />查询和遍历XML文档的大致步骤:创建IXMLDOMDocument接口对象 -> load加载文档 -> 得到root节点 -> 依次遍历各节点。也可以通过IXMLDOMDocument接口的selectSingleNode或selectNodes函数分别得到指定节点

vagabond1的专栏 1642

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MSXML使用教程

VC++中利用MSXML解析XML文档 一、XML 简介 XML(Xtensible Markup Language,即扩展标记语言)的发展起源于1996年。当时,出版界巨头和Web业内人士经过共同讨论,提出了创建SGML(Standard Generalized Markup Language,即标准通用标识语言)子集(HML)的建议。该子集专用于Web,具有可扩展(或可扩充)性,并...

weixin_30735745的博客 700

微软的MSXML解析器

微软的MSXML解析器读一个XML文档,然后把它的内容解析到一个抽象的信息容器中称为节点(NODES)。这些节点代表文档的结构和内容,并允许应用程序来读和操作文档中的信息而不需要显示知道的XML的语义。在一个文档被解析以后,它的节点能够在任何时候被浏览而不需要保持一定的顺序。对开发人员来说,最重要的编程对象是DOMDocument。DOMDocument对象通过暴露属性和方法来允许浏览、查询和修改

月光饭盒--专栏 3233

windows读写XML

windows读写xml,可以使用自带的com组件msxml6.dll。 一,引用组件 #inport <msxml6.dll> 注意: 1,安装的不同版本VS,xml的版本不一样,2019是msxml6.dll, 其他版本可以到system32目录下看是哪个版本。另外,64位的库在sysWow64目录下。 2,组件引用后会自动生成 msxml6.tlh,这里会有所有的组件方法。如果编译不过,可以到这个文件里找对应的,比如实例名称msxml6中是MSXML2::DOMDocume..

大余里,大余的干货分享 967

应用MSXML的DOM模型处理XML

 wince 5.0目前支持到微软的msxml 3.0xml解析有两个接口,DOM和SAX,DOM(Document Object Model),SAX(Simple Application interface for XML)。前者是最基本应用编程接口,后者提供了比较底层的接口.初学咋练,只研究DOM。据说DOM接口使用了COM的技术,是把一个xml文档,解释成一棵节点树。然后对这个树进行访问来

虚拟化开发 977

VC读写XML文档

转载http://blog.sina.com.cn/s/blog_4b5039210100issi.html 实验环境:VC++6.0 ,windows XP   需要安装MSXML 4.0 SP2      实现的功能是初始化XML文档,读取特定节点,和创建新节点删除节点等操作。XML文件如下所示:       首先我们要实现的功能是:创建一个如图所示

寻找中 1763

xml 之dom方式调试篇

doc.appendChild( doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\""));

icatchyou的专栏 1468

XmlDocument类的使用

XmlNode 类 :表示 XML 文档中的单个节点。XmlDocument.CreateElement (String, String, String) :创建具有指定 Prefix(命名空间前缀)、LocalName(获取节点的本地名称) 和 NamespaceURI(命名空间) 的元素。 由 .NET Compact Framework 支持。XmlDocument.AppendCh

hyde100的专栏 813

当IHTMLTxtRange::findText Method查找不到字符串的时候

/*程序中的源码*/ HRESULT    CContentBehavior::InternalFindTextImpl(CComBSTR bstrText, DWORD dwFlag, BOOL  bSelected, DWORD *dwRet, BOOL bReplaceFind) {  if( dwRet)   *dwRet =0;  CStringW strText(bstrTe

hellochenlian的专栏 2202
上一篇: VC DOM XML加载失败,说里面有非法字符,用xmlSpy打开XML,然后修改任何一个字符保存后,再加载成功
下一篇: DDL DML DCL
hellochenlian
博客等级 码龄17年 629粉丝 295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellochenlian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值