关闭的问题,因为它是不是一个错误 - 它只是无法无法使用XPath谓语时设置范围/关闭/
我试图返回一个包含一个的ListObject的所有元素的范围/ xmlmap其中兄弟元素符合某些条件(特定元素值不为空/空白/零长度)。
如果我尝试返回xmlmap的整个元素,我会得到正确返回的范围。然而,只要我添加任何标准,范围对象没有设置,我得到一个错误。
我已经删除了命名空间refrences遍历,尝试和固定错误,但即使没有命名空间声明,错误仍然存在。下面的代码是我正在使用的简化版本,以显示错误。
XML数据
<?xml version='1.0' encoding='UTF-8'?>
<ROOT>
<RECORD>
<ITEMA/>
<ITEMB>RED</ITEMB>
</RECORD>
<RECORD>
<ITEMA>A</ITEMA>
<ITEMB>BLUE</ITEMB>
</RECORD>
<RECORD>
<ITEMA>B</ITEMA>
<ITEMB>GREEN</ITEMB>
</RECORD>
</ROOT>
XSD用于建立XmlMap在Excel
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ROOT" type="RootType"/>
<xs:complexType name="RootType">
<xs:sequence>
<xs:element name="RECORD" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ITEMA"/>
<xs:element name="ITEMB"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
工作VBA代码(无谓语)
Sub TestSUCCESS()
Dim rngSource As Range
Dim sSourceXPath As String
sSourceXPath = "/ROOT/RECORD/ITEMB"
Set rngSource = Sheet4.XmlDataQuery(sSourceXPath)
Debug.Print rngSource.Address
End Sub
非工作VBA代码(谓语)
Sub TestERROR()
Dim rngSource As Range
Dim sSourceXPath As String
sSourceXPath = "/ROOT/RECORD/ITEMA[text()[normalize-space()]]"
Set rngSource = Sheet4.XmlDataQuery(sSourceXPath)
If Not rngSource Is Nothing Then
Debug.Print rngSource.Address
Else
Debug.Print "ERROR: rngSource isn't set"
End If
End Sub
我已经使用以下XPath也试过:
"/ROOT/RECORD/ITEMB[../ITEMA[string-length(text()) > 0]]"
还有folloving的变化只是为了得到任何工作,但无济于事:
sSourceXPath = "/ROOT/RECORD/ITEMB[../ITEMA[.="A"]]"
所有的XPath实例我已经在Altova XMLSpy 2005工作。
任何人都可以提供任何关于我哪里出错的建议吗?
我不认为关闭这个问题是适当的行动。也许用户用户可能有理智的问题。 – 2013-05-09 19:11:19