Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
使用MSXML选择XML注释节点_Xml_Vb.net_Dom_Xpath_Msxml - Fatal编程技术网

使用MSXML选择XML注释节点

使用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

目前,我无法访问我试图读取的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: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>