VB / VBA中的XML反序列化
发布时间:2020-12-17 07:28:05 所属栏目:百科 来源:网络整理
导读:我在MS Access数据库中有一组VBA类. 我有一个xml字符串,其中包含我想要创建新类的数据. 除了单独设置每个属性之外,还有一种简单的方法可以将XML反序列化为我的对象吗? 我已经看到使用TypeLib库的代码 Public Sub ISerializable_Deserialize(xml As IXMLDOMN
我在MS Access数据库中有一组VBA类.
我有一个xml字符串,其中包含我想要创建新类的数据. 除了单独设置每个属性之外,还有一种简单的方法可以将XML反序列化为我的对象吗? 我已经看到使用TypeLib库的代码 Public Sub ISerializable_Deserialize(xml As IXMLDOMNode) Dim tTLI As TLIApplication Dim tInvoke As InvokeKinds Dim tName As String Dim tMem As MemberInfo tInvoke = VbLet For Each tMem In TLI.ClassInfoFromObject(Me).Members tName = LCase(tMem.Name) CallByName Me,tMem.Name,VbLet,xml.Attributes.getNamedItem(tName).Text Next tMem End Sub 但这似乎不适用于标准类模块.我收到429错误: ActiveX Component Cannot Be Created 其他人可以帮帮我吗?如果我可以提供帮助,我宁愿不必手动设置每个属性,这些类中的一些是巨大的! 解决方法
你永远不会在该代码中实例化tTLI&然后将它称为TLI,因此它不会工作,429错误可能是因为TypeInfo库未注册,您是否将其添加为引用?
如果您这样做了以下将工作: Dim TLI As TLIApplication Dim II As InterfaceInfo Dim MI As MemberInfo Set TLI = New TLIApplication Set II = TLI.InterfaceInfoFromObject(Me) For Each MI In II.Members If MI.InvokeKind = InvokeKinds.INVOKE_PROPERTYPUT Then Debug.Print MI.Name TLI.InvokeHook Me,MI.Name,InvokeKinds.INVOKE_PROPERTYPUT,"PROPVALUE" End If Next 如果愿意,可以用CallByName替换InvokeHook. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |