Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Office主互操作程序集并调用CustomXMLNode.AppendChildNode()时,如何引用以前定义的XML命名空间?_C#_Xml_Vsto_Office Interop_Office 2016 - Fatal编程技术网

C# 使用Office主互操作程序集并调用CustomXMLNode.AppendChildNode()时,如何引用以前定义的XML命名空间?

C# 使用Office主互操作程序集并调用CustomXMLNode.AppendChildNode()时,如何引用以前定义的XML命名空间?,c#,xml,vsto,office-interop,office-2016,C#,Xml,Vsto,Office Interop,Office 2016,显然,我遗漏了一些内容,因为在Office 2016或更高版本中调用CustomXMLNode.AppendChildNode()时,我无法引用以前定义的XML命名空间: private void AppendChild(Microsoft.Office.Core.CustomXMLNode node) { node.AppendChildNode("nil", "xmlns:xsi", Microsoft.Office.Core.MsoCustomXMLNodeType.msoCust

显然,我遗漏了一些内容,因为在Office 2016或更高版本中调用
CustomXMLNode.AppendChildNode()
时,我无法引用以前定义的XML命名空间:

private void AppendChild(Microsoft.Office.Core.CustomXMLNode node)
{
    node.AppendChildNode("nil", "xmlns:xsi", Microsoft.Office.Core.MsoCustomXMLNodeType.msoCustomXMLNodeAttribute, "true");
}
上述调用生成:

<IndexId xmlns:ns3="xmlns:xsi" ns3:nil="true"></IndexId>
很显然,“NamespaceURI”参数(请参阅)只是字面意思,每次都被定义为一个新的名称空间。我尝试了以下所有方法,但均无效:

node.AppendChildNode("nil", "xsi",       Microsoft.Office.Core.MsoCustomXMLNodeType.msoCustomXMLNodeAttribute, "true");
node.AppendChildNode("nil", "xsi:",      Microsoft.Office.Core.MsoCustomXMLNodeType.msoCustomXMLNodeAttribute, "true");
node.AppendChildNode("nil", ":xsi",      Microsoft.Office.Core.MsoCustomXMLNodeType.msoCustomXMLNodeAttribute, "true");
node.AppendChildNode("nil", "xmlns:xsi", Microsoft.Office.Core.MsoCustomXMLNodeType.msoCustomXMLNodeAttribute, "true");
上述所有调用都会生成以下等价项,
替换为作为上述第二个参数传入的字符串:

<IndexId xmlns:ns3="<NamespaceURI_arg>" ns3:nil="true"></IndexId>
这会产生不必要的冗长:

<IndexId xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" ns0:nil="true"></IndexId>


请您在您的问题中编辑一些简单的示例XML,用于自定义XML部分,这样我们就可以进行测试了?请注意,VBA不会在现有XML中使用预定义的命名空间别名。它分配了自己的(ns前缀),因此通常需要使用名称空间管理器功能。请您在问题中编辑一些简单的示例XML,用于自定义XML部分,以便我们进行测试?请注意,VBA不会在现有XML中使用预定义的命名空间别名。它分配自己的(ns前缀),因此通常需要使用名称空间管理器功能。
node.AppendChildNode("nil", "http://www.w3.org/2001/XMLSchema-instance", Microsoft.Office.Core.MsoCustomXMLNodeType.msoCustomXMLNodeAttribute, "true");
<IndexId xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" ns0:nil="true"></IndexId>