- PR -

xpathでand検索を行いたい

1
投稿者投稿内容
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-06-01 14:37
 いつもお世話になります。只今、VB.NETとXMLで掲示板を作成しています。

 投稿されたデータの中からテキストボックスに入力された条件で検索を行いたいのですが、
スペースで文字を区切ってand検索を行いたいのです。
 SQLならand条件を足していけばいいのでしょうがxpathではどう記述すればよいのでしょうか?

Dim parentNoNode As XmlNodeList

parentNoNode = xmldoc.SelectNodes("dataroot/表示[contains(.,'" & txtSel.Text & "')]/@親No")

上記のコードでtxtSelが条件入力欄です。
この式で表示要素の下にtxtSel.Textの文字列が含まれる親No属性のリストを抽出しています。

複数の検索文字列で検索を行った場合、containsで検索が可能なのでしょうか?

宜しくご教授お願いしたします。




MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-06-01 15:21
XPath 論理演算子 and
[contains(.,検索語1) and contains(.,検索語2)]

あるいは,連続指定
[contains(.,検索語1)][contains(.,検索語2)]
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-06-01 15:32
MMXさん、早速のご返答ありがとうございます。

また結果をご報告いたします。ありがとうございました。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-06-01 16:39
出来ましたので報告します。

Dim parentNoNode As XmlNodeList

parentNoNode = xmldoc.SelectNodes("dataroot/表示[contains(.,'" & txtSel.Text & "')]/@親No")

上のコードを以下のように修正しました

Dim parentNoNode As XmlNodeList

'検索条件を作成
Dim strJoken As String = Fnc_Create_Joken(txtSel.Text)

parentNoNode = xmldoc.SelectNodes("dataroot/表示" & strJoken & "/@親No")

=======================
条件作成Function
=======================
Private Function Fnc_Create_Joken(ByVal input As String) As String

'条件の配列を作成(全角スペースを半角スペースに変換)
Dim Array_Joken() As String = Split(Replace(input, " ", " "))

For Each Joken As String In Array_Joken

Fnc_Create_Joken = Fnc_Create_Joken & "[contains(.,'" & Joken & "')]"

Next

End Function


テキストボックスtxtSelにスペース区切りで複数条件を入力しての検索ができました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)