Vba 使用XSLT转换XML

Vba 使用XSLT转换XML,vba,ms-access,xslt,Vba,Ms Access,Xslt,Access中有一个表,其中有一个包含XSLT代码的字段。我想导入一个XML文档,并使用表中的XSLT对其进行转换。但是,我得到以下错误: “-2147467259 8000004005”样式表不包含文档元素。样式表可能为空,也可能不是格式良好的xml文档 使用xml验证器的检查成功 专用子btnImport\u单击 将StrFileName设置为字符串 将fd设置为文件对话框 Dim VRT选择编辑项作为变量 Dim strFile作为字符串,strPath作为字符串 Dim xmlDoc作为

Access中有一个表,其中有一个包含XSLT代码的字段。我想导入一个XML文档,并使用表中的XSLT对其进行转换。但是,我得到以下错误:

“-2147467259 8000004005”样式表不包含文档元素。样式表可能为空,也可能不是格式良好的xml文档

使用xml验证器的检查成功

专用子btnImport\u单击 将StrFileName设置为字符串 将fd设置为文件对话框 Dim VRT选择编辑项作为变量 Dim strFile作为字符串,strPath作为字符串 Dim xmlDoc作为新的MSXML2.DOMDocument60,xslDoc作为新的MSXML2.DOMDocument60 将newDoc变为新的MSXML2.DOMDocument60 将daoRST设置为DAO.Recordset:Set daoRST=CurrentDb.OpenRecordsetAttachments:Debug.Print daoRST.FieldsXML.Value: 设置xmlDoc=New MSXML2.DOMDocument60 设置newDoc=newmsxml2.DOMDocument60 设置fd=Application.FileDialogmsoFileDialogFilePicker 有fd .InitialFileName=C:\Users\1122335\Desktop\*.xml 如果.Show=-1,则 对于中的每个VRT选择编辑项。选择编辑项 xslDoc.Load daoRST.FieldsXML.Value '加载XML源 加载vrtSelectedItem '变换源
xmlDoc.transformNodeToObject xslDoc,newDoc'无论何时使用MSXML从字符串加载DOM对象,就像使用记录集调用一样,都要使用loadXML方法,而不是加载后者希望在磁盘或url路径上保存的文件

因此,只要改变:

xslDoc.Load daoRST.FieldsXML.Value 致:

xslDoc.LoadXML daoRST.FieldsXML.Value 顺便说一句,您不需要在循环的每次迭代中重新加载XSLT,只需要在循环外部重新加载一次,但是XML对象应该在循环内部重新初始化,而不是在循环外部重新初始化一次。考虑以下调整:

... '加载XSL脚本 xslDoc.LoadXML daoRST.FieldsXML.Value 设置fd=Application.FileDialogmsoFileDialogFilePicker 有fd .InitialFileName=C:\Users\1122335\Desktop\*.xml 如果.Show=-1,则 对于中的每个VRT选择编辑项。选择编辑项 '初始化XML对象 设置xmlDoc=New MSXML2.DOMDocument60 设置newDoc=newmsxml2.DOMDocument60 '加载XML源 加载vrtSelectedItem '变换源 xmlDoc.transformNodeToObject xslDoc,newDoc newDoc.Save C:\Users\1122335\Desktop\temp.xml '附加到表 出错时继续下一步 Application.ImportXML C:\Users\1122335\Desktop\temp.xml,acAppendData 下一个vrtSelectedItem 如果结束 以 “免费资源 设置xmlDoc=Nothing 设置newDoc=Nothing 设置xslDoc=Nothing
在将xslDoc用于转换并将其添加到问题之前,是否可以输出xslDoc的内容?此外,请参阅和类似的谷歌点击以获取您的错误消息。谢谢@Parfait!这就解决了!我已经找了两天了!也谢谢你的调整!