使用MSXML选择XML注释节点
目前,我无法访问我试图读取的XSD中任何注释的内容 以下是我试图从中阅读评论的XSD片段:使用MSXML选择XML注释节点,xml,vb.net,dom,xpath,msxml,Xml,Vb.net,Dom,Xpath,Msxml,目前,我无法访问我试图读取的XSD中任何注释的内容 以下是我试图从中阅读评论的XSD片段: <xs:schema> <xs:complexType name="typeName"> <xs:choice> <xs:element name="elementName" type="someOtherType"><!--This is a comment I would like to access
<xs:schema>
<xs:complexType name="typeName">
<xs:choice>
<xs:element name="elementName" type="someOtherType"><!--This is a comment I would like to access.--></xs:element>
</xs:choice>
</xs:complexType>
</xs:schema>
通过修改selectSingleNode的XPATH参数,我能够成功访问XSD中的所有其他节点类型,但是我还没有成功选择任何注释类型的节点,即使使用“//comment()”。任何帮助都将不胜感激 考虑发布一个最小但完整的样本,让我们重现问题。当我使用
Module Module1
Sub Main()
Dim doc As MSXML2.DOMDocument60 = New MSXML2.DOMDocument60
If doc.load("XMLFile1.xml") Then
doc.setProperty("SelectionNamespaces", "xmlns:xs='http://www.w3.org/2001/XMLSchema'")
Dim comment As MSXML2.IXMLDOMComment = doc.selectSingleNode("//xs:element//comment()")
If comment IsNot Nothing Then
Console.WriteLine(comment.nodeValue)
End If
End If
End Sub
End Module
其中XMLFile1.xml是
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="typeName">
<xs:choice>
<xs:element name="elementName" type="someOtherType">
<!--This is a comment I would like to access.-->
</xs:element>
</xs:choice>
</xs:complexType>
</xs:schema>
然后程序(使用VS 2012作为.NET 4.5应用程序编译)输出“这是我想访问的注释”。加载XML方法的可能重复项采用带有XML标记的字符串,而不是文件名。为什么将MSXML与.NET、System.Xml.XmlDocument或System.Xml.Linq.XDocument一起使用是纯托管实现。另外,
//comments()
应该会给出一个XPath错误,节点测试是单数的//comment()
@MartinHonnen正如我确信您所知道的,所有代码都只是一个模型。对于您指出的两个错误,我深表歉意,我将更正它们,但是这些问题在原始代码中不存在。至于MSXML,我正在将旧的VBA转换为VB.Net,并希望尽可能多地保留旧的代码库以加快转换。@TonyHopkinson我知道这个问题,但是公认的答案与我尝试使用的方法完全相同。谢谢Martin,这很好。问题最终与我的VS资源没有正确更新有关,因此完全与发布内容无关。我觉得在这一点上,我的问题基本上是无关的,我是否最好干脆删除它?是的,你可以删除它。
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="typeName">
<xs:choice>
<xs:element name="elementName" type="someOtherType">
<!--This is a comment I would like to access.-->
</xs:element>
</xs:choice>
</xs:complexType>
</xs:schema>