【发布时间】:2014-06-23 16:15:55
【问题描述】:
目前,我无法访问我试图从中读取的 XSD 中任何 cmets 的内容。
这是我试图从中读取 cmets 的 XSD 的 sn-p:
<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>
我碰巧在使用 VB.Net。这是试图从上述 XSD 访问 XML 注释的类的 sn-p:
Public Class QAutoTestXSD
Private XML As MSXML2.DOMDocument60
Public Sub New()
XML = New MSXML2.DOMDocument60
Call XML.setProperty("SelectionNamespaces", "xmlns:xs='http://www.w3.org/2001/XMLSchema'")
XML.async = False
If Not XML.load("C:\myXML.xml") Then
Call handleParsingError
End If
End Sub
Public Function getXSDComment(typeName As String, elementName As String) As String
getXSDComment = XML.selectSingleNode("/xs:schema/xs:complexType[@name='" & typeName & "TestType']/xs:choice/xs:element[@name='" & elementName & "']/comment()").nodeValue
End Function
End Class
通过修改 selectSingleNode 的 XPATH 参数,我能够成功访问 XSD 中的所有其他节点类型,但是我还没有成功选择任何注释类型的节点,即使使用“//comment()”也是如此。任何帮助将不胜感激!
【问题讨论】:
-
loadXML方法采用带有 XML 标记的字符串,而不是文件名。以及为什么将 MSXML 与 .NET 一起使用,System.Xml.XmlDocument 或 System.Xml.Linq.XDocument 是纯托管实现。//comments()也应该给出 XPath 错误,节点测试是单数//comment()。 -
@MartinHonnen 我敢肯定你可以看出,所有的代码都只是一个模型。对于您指出的两个错误,我深表歉意,我会更正它们,但是原始代码中不存在这些问题。至于 MSXML,我正在将旧版 VBA 转换为 VB.Net,并希望尽可能多地保留旧代码库以加快转换速度。
-
@TonyHopkinson 我知道这个问题,但是接受的答案与我尝试使用但未成功的方法相同。
标签: xml vb.net dom xpath msxml