Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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.customeXMLparts_C#_Xml_Vb.net_Excel_Xpath - Fatal编程技术网

C# 正在检索没有名称空间的Office.customeXMLparts

C# 正在检索没有名称空间的Office.customeXMLparts,c#,xml,vb.net,excel,xpath,C#,Xml,Vb.net,Excel,Xpath,我正在尝试使用它的CustomXMLParts组件将一些数据存储在Excel文件中。 我也很努力地失败了 我有以下代码: Public Shared Sub AddSettingsXMLToDocument() Dim xmlPart As XElement = <SoftwareName xmlns="myNamespace"> <Settings>

我正在尝试使用它的CustomXMLParts组件将一些数据存储在Excel文件中。 我也很努力地失败了

我有以下代码:

    Public Shared Sub AddSettingsXMLToDocument()

        Dim xmlPart As XElement =
            <SoftwareName xmlns="myNamespace">
                <Settings>
                    <FormVersion></FormVersion>
                    <FormPassword>"Password"</FormPassword>
                    <DatabaseRequiresAdminMode></DatabaseRequiresAdminMode>
                </Settings>
            </SoftwareName>

        Dim aWorkbook As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook
        aWorkbook.CustomXMLParts.Add(xmlPart.ToString(), System.Type.Missing)
    End Sub


    Public Shared Function GetSettingsXMLFromDocument() As String
        Dim aWorkbook As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook

        'GET THE ENTIRE THING
        Dim retrievedXMLParts As Office.CustomXMLParts = aWorkbook.CustomXMLParts.SelectByNamespace("myNamespace")
        Dim customXMLPart As Office.CustomXMLPart = retrievedXMLParts2.Cast(Of Office.CustomXMLPart)().FirstOrDefault()

        'TRYING TO GET A SPECIFIC FIELD
        Dim formField As Office.CustomXMLNode = customXMLPart2.SelectSingleNode("XpathExpression")
        If (Not IsNothing(formField)) Then _
            MsgBox("FINALLY GOT MY NODE!   " & vbNewLine & d1.XML)
        If (IsNothing(formField)) Then _
            MsgBox("ARG")
        Return FormField.XML
    End Function
公共共享子添加设置xmltodocument()
Dim xmlPart作为XElement=
“密码”
将工作簿设置为Excel.Workbook=Globals.ThisAddIn.Application.ActiveWorkbook
aWorkbook.CustomXMLParts.Add(xmlPart.ToString(),System.Type.Missing)
端接头
公共共享函数GetSettingsXMLFromDocument()作为字符串
将工作簿设置为Excel.Workbook=Globals.ThisAddIn.Application.ActiveWorkbook
“把一切都弄清楚
Dim retrievedXMLParts作为Office.CustomXMLParts=aWorkbook.CustomXMLParts.SelectByNamespace(“myNamespace”)
Dim customXMLPart As Office.customXMLPart=retrievedXMLParts2.Cast(Of Office.customXMLPart)(.FirstOrDefault)()
'尝试获取特定字段
将表单字段设置为Office.CustomXMLNode=customXMLPart2。选择SingleNode(“XpathExpression”)
如果(notisnothing(formField))那么_
MsgBox(“终于找到我的节点了!”&vbNewLine&d1.XML)
如果(IsNothing(formField))那么_
MsgBox(“ARG”)
返回FormField.XML
端函数
我感兴趣的是: 将表单字段设置为Office.CustomXMLNode=customXMLPart2。选择SingleNode(“XpathExpression”)

我已经尝试了Xpath表达式的每一个方面,除了“*/”之外,我收到了一个空值

我还读了一篇关于名称空间的文章,但它不能作为Office与VSTO一起使用。CustomXMLParts不允许您使用NamespaceManager参数重载函数。

如何在Office.CustomXMLParts之外构建数据? 如何更新工作簿.CustomXMLParts?

非常感谢


编辑:我要离开几天。我非常感谢你的意见!不幸的是,在我返回之前,我无法确认任何解决方案。

如果您真的找不到注册名称空间前缀并在XPath中使用它的方法,那么您可以通过忽略名称空间并按其本地名称筛选节点。例如(为了可读性而格式化):


谢谢它就像一个符咒!我找不到关于这种语法的任何信息,所以我必须在这件事上做功课。
//*[local-name()='SoftwareName']
   /*[local-name()='Settings']
   /*[local-name()='FormPassword']