我在插入一个group节点时,发生了如下的异常
Message "Element '{http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-11T09:28:40}Contacts' is unexpected according to content model of parent element '{http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-11T09:28:40}myFields'./r/nExpecting: {http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-11T09:28:40}Resources./r/n" string
下面是我的代码:
IXMLDOMNode nodeEntry, node;
//set the projectid
IXMLDOMDocument2 tempDom = (IXMLDOMDocument2)thisXDocument.DOM;
tempDom.setProperty("SelectionLanguage", "XPath");
tempDom.setProperty("SelectionNamespaces",
"xmlns:dfs=/"" + "http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" +
"/" xmlns:my=/"http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-11T09:28:40/"");
//nodeEntry = tempDom.documentElement.selectSingleNode("my:Tasks");
//node = nodeEntry.cloneNode(true);
//nodeEntry.parentNode.appendChild(node);
try
{
nodeEntry = tempDom.documentElement.selectSingleNode("my:Contacts");
node = nodeEntry.cloneNode(true);
nodeEntry.parentNode.appendChild(node);
}
catch (Exception ex)
{
}
马上在网上找了一下,没有找到具体的原因,不过可以肯定是因为我们在设计infopath时对group node做过某些修改造成的。
解决方法很简单,使用insertBefore代替appendChild即可。
// Write your code here.
IXMLDOMNode nodeEntry, node;
//set the projectid
IXMLDOMDocument2 tempDom = (IXMLDOMDocument2)thisXDocument.DOM;
tempDom.setProperty("SelectionLanguage", "XPath");
tempDom.setProperty("SelectionNamespaces",
"xmlns:dfs=/"" + "http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" +
"/" xmlns:my=/"http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-04-11T09:28:40/"");
//nodeEntry = tempDom.documentElement.selectSingleNode("my:Tasks");
//node = nodeEntry.cloneNode(true);
//nodeEntry.parentNode.appendChild(node);
try
{
nodeEntry = tempDom.documentElement.selectSingleNode("my:Contacts");
node = nodeEntry.cloneNode(true);
nodeEntry.parentNode.insertBefore(node, nodeEntry);
}
catch (Exception ex)
{
}