我正在处理CustomXMLPart
我所识别的属性(@Id)。
var xPath = "/ns0:customPartParent[1]/ChildNode[@Id='" + id + "']";
contentControl.XMLMapping.SetMapping(xpath, prefix, customPart)
当将控件的xPath
设置为上面,在运行时查看映射时,路径保持为Id - 即
/ns0:customPartParent[1]/ChildNode[@Id='eae2fd04-3a05-42c1-a154-0d7da47cca56']
但是只要我提供一条完整的路径;
/ns0:customPartParent[1]/ChildNode[@Id='eae2fd04-3a05-42c1-a154-0d7da47cca56']/Value[1]/Item[1]/Fullname[1]
@Id将替换为文档中附加部分的索引。
/ns0:customPartParent[1]/ChildNode[2]/Value[1]/Item[1]/Fullname[1]
这是一个问题的原因是因为我们的功能允许合并2个文档,我从一个文档复制XMLPartNodes
并将其添加到第二个文档的节点 - 如果这些是索引的,他们显然会查看customXMLPart中的错误项目。
我想尝试强制保留@Id,以便当我将此部分移动到另一个文档时,该部分将使用相同的@id标识,而不是通过索引标识?
有什么想法吗?
更新:只有在添加重复内容控件后才会发生这种情况,只要我添加了我的重复控件,所有ID都会消失并恢复为索引编号。
重复添加项目之前内容控件的值:
/ns0:customPartParent[1]/ChildNode[@Id='1cae3c3f-c847-4a7c-91dc-5625a2228a11']/Value[1]/Item[1]/Fullname[1]
重复添加项目后内容控件的值:
/ns0:customPartParent[1]/ChildNode[2]/Value[1]/Item[1]/Fullname[1]