我正在将InfoPath 2003对象模型代码转换为InfoPath 2007托管代码,我想在表单加载事件(FormEvents_Loading)上向表单的一部分添加属性和childNodes。我想更新以下部分:
我要向
我的InfoPath 2003对象模型代码
添加和设置属性值:
flag = TheXDocument.DOM.createAttribute(“active”) prereqsNode.attributes.setNamedItem(flagNode).text =“true”
newNode = doc.CreateNode(NodeTypeElemt,FromNamespacePrefix,“Book”,FormNamespace)
specificBookAttrib = newNode.OwnerDocument.CreateAttribute("BookId")
specificBookIdAttrib.Value = “anybook”
newNode.Attributes.Append(specificBookIdAttrib)
SpecificBookNode.AppendChild(newNode)
有人可以帮我转换上面的行使用管理代码吗?
答案 0 :(得分:1)
因为我可以创建一个新属性,因为sampledata.xml有一个默认值,尽管我的Template.xml没有;我无法设置该值,因为它只读。 prereqsNode = navigator.SelectSingleNode(“// mstns:SpecificBook”,Me.NamespaceManager)
*错误“重复属性” prereqsNode.CreateAttribute(“”,“areLoaded”,“”,“true”)
错误“只读” prereqsNode.SetValue( “真”)*
我决定创建一个新的XmlDocument:
创建新属性替换
整个mstns:SpecificBook节点
我还使用XmlDocument创建childNodes,将节点转换为导航器,然后追加childNodes。
Dim doc As XmlDocument = New XmlDocument Dim newNode As XmlNode Dim activeAttrib As XmlAttribute
activeAttrib = newNode.OwnerDocument.CreateAttribute(“active”) activeAttrib.Value = True newNode.Attributes.Append(activeAttrib)
specificBookNode.ReplaceSelf(newNode.OuterXml)