我正在尝试使用vb.net编辑XML文件。这个XML文件是用于功能区中的一个miscrosoft outlook添加。我想能够编辑代码,以便用户可以将按钮添加到我的插件(他们的版本)我对VB和XML一般来说有点新,我似乎无法找到如何做到这一点。这是我目前的问题。vb.net阅读xml文件中的元素<>
我可以阅读和正确的文件,看起来像这样。
<?xml version="1.0" encoding="UTF-8"?>
<customUI>
<ribbon>
<tabs>
<tab>
<group>
<button>
</button>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
但是,只要我添加“元素?”在节点<>我似乎无法编辑。下面是我似乎无法弄清楚如何编辑的XML。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab idMso="TabAddIns">
<group>
<button id="Add" label="AddNode" getImage="GetImage" onAction="RunAdd" visible="true" size="large" screentip="Add an XML file Node" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
这里就是我试图 1.我试图重写我的XML代码所以没有什么是<>以外的节点名之内。这导致我的按钮,我似乎无法解决的错误。 2.我现在的vb.net代码如下所示
Dim MyXMLNode As XmlNode
MyXMLNode= MyXML.SelectSingleNode("/customUI/ribbon")
WriteLine("Hello World2")
If MyXMLNode IsNot Nothing Then
WriteLine("Hello World")
MyXMLNode.InnerText = "CreateTeset"
Else
WriteLine("Hello World3")
'Do whatever
End If ' Save the Xml.
此代码编辑的第一个XML而不是第二。
基于writeline的我知道问题是与这条线,因为你好世界不输出,但你好世界2和3是。
MyXMLNode= MyXML.SelectSingleNode("/customUI/ribbon")
我试过代码是这样的(请注意,我不知道,下面的代码是正确的,因为我无法找到我是从确认页面,它应该是对的,我用的时候它虽然。
MyXMLNode= MyXML.SelectSingleNode("/customUI/ribbon['element']")
我已经搜查,但我找不到任何一个试图读取XML这样的。我愿意重写XML也是如此。任何帮助表示赞赏。
而且,这里是什么我希望能够做到,我希望能够添加/删除/编辑按钮组和标签。一个例子是我想从“东西”更新按钮的标签为“别的东西”
编辑: 如何选择customUI节点编辑的xmlns例如
这里是我的尝试
Dim MyXMLNode As XmlNode = MyXML.SelectSingleNode("/customUI")
Dim strValue As String = MyXMLNode.Attributes("xmlns").Value 'retursn "Add"
WriteLine("Hello World2" & strValue)
If MyXMLNode IsNot Nothing Then
WriteLine("Hello World")
MyXMLNode.Attributes("xmlns").Value = "CreateTest"
Else
WriteLine("Hello World3")
'Do whatever
End If ' Save the Xml.
我会在第二暗淡行的错误,因为第一个朦胧线没有做任何事情(即它返回一个空节点)
我注意到的主要区别是默认的命名空间声明'的xmlns =“HTTP:/ /schemas.microsoft.com/office/2009/07/customui“在根元素上。您必须调整传递给'SelectSingleNode'的XPath表达式来使用前缀,并将一个'XmlNamespaceManager'绑定前缀到XML中使用的名称空间。 –
你能给我一个例子,我道歉,但我不是很熟悉这个词汇。 (没有正式的代码背景) – Gibbs314
请先参阅文档中的示例,它完全覆盖了默认命名空间的情况https://msdn.microsoft.com/zh-cn/library/4bektfx9(v=vs.110).aspx说:“如果你的XML包含一个默认的命名空间,你仍然必须添加一个前缀和命名空间的URI到XmlNamespaceManager;否则,你将不会得到任何选择的节点” –