InfoPath 2007 - 通过托管代码添加属性和childNodes

时间:2010-03-01 19:28:21

标签: infopath-2007

我正在将InfoPath 2003对象模型代码转换为InfoPath 2007托管代码,我想在表单加载事件(FormEvents_Loading)上向表单的一部分添加属性和childNodes。我想更新以下部分:

           

我要向 mstns:SpecificBook 节点和一些子节点添加属性。结果应该是:

      
             
           

我的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)

有人可以帮我转换上面的行使用管理代码吗?

1 个答案:

答案 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)