以下のタグ内にある特定のテキストを検索し、それを返す 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]
ユニコード「ĐĂ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)