我正在尝试构建一个 xpath 表达式来搜索位于[CDATA]
下面标签中的特定文本,并返回它(注意:它们将是许多<Car>
节点,所有节点都具有唯一的[CDATA]
文本):
<Cars>
<Car>
<Value><![CDATA[Login]]></Value>
<DifValue code="01"><![CDATA[Entrada al sistema]]></DifValue>
<DifValue code="02"><![CDATA[ĐĂNG NHẬP]]></DifValue>
</Car>
<Car>
.
.
.
</car>
</Cars>
问题是我的表达对[CDATA]
除 unicode “ĐĂNG NHẬP”以外的所有文本都有效(我只是在“targetText”中没有返回任何内容)
这是我到目前为止的简化片段:
Dim unicodeText as String = "ĐĂNG NHẬP"
unicodeText = unicodeText.ToLower()
Dim targetText as XmlNode = root.SelectSingleNode("//Cars/*/text()[translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') =""" + unicodeText + """]", namespaceManager)
有什么想法吗?
更新:
虽然 JLRishe 确实有一个很好的解决方案(我接受了他的解决方案作为答案),但我确实提出了使用 RegEx 的自己的方法(可能不是最好的,但我只是分享):
Dim unicodeText as String = "ĐĂNG NHẬP"
unicodeText = unicodeText.ToLower();
Dim targetText as XmlNode = root.SelectSingleNode("//Car/text()[translate(., """ & unicodeText.ToUpper() & """, """ & unicodeText & """) =""" & unicodeText & """]", namespaceManager)