- 締切済み
SelectNodsを使っての検索
<DB> <kojin> <no>1</no> <name>山田</name> <keireki> <kaisha> <nyuusha>1999/04/01</nyuusha> <kname>A社</kname> </kaisha> <kaisha> <nyuusha>2001/04/01</nyuusha> <kname>B社</kname> </kaisha> </keireki> </kojin> <kojin> <no>2</no> <name>鈴木</name> <keireki> <kaisha> <nyuusha>1999/04/01</nyuusha> <kname>B社</kname> </kaisha> </keireki> </kojin> </DB> 以上のようなXMLを作成した場合に、 <nyuusha>'1999/04/01'で <kname>が'A社'の<kojin>の情報を 取得したい場合はどうしたらよいのでしょうか? selectNodesを使ってデータの取得をしたいと 考えていますので、できましたらselectNodesを 使ったやり方を教えてください。 よろしくお願いいたします。
- mymilky
- お礼率35% (5/14)
- XML
- 回答数2
- ありがとう数19
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- flame
- ベストアンサー率100% (3/3)
上記の回答の修正です。 var knameNode = nyuushaNodes(i).parentNode.selectSingleNode("nyuusha"); の最後のnyuushaを、knameに置き換えてください。
- flame
- ベストアンサー率100% (3/3)
こんな感じでしょうか。(JScriptで書くので、適宜他の言語に置き換えてください。JScript,VBScript以外ではテキストノードの取得方法が違うので注意を) var resultNodes = new Array(); var nyuushaNodes = DB.documentElement.selectNodes("//nyuusha"); for (var i = 0; i < nyuushaNodes.length; i++) { if (nyuushaNodes(i).text == "1999/04/01") { var knameNode = nyuushaNodes(i).parentNode.selectSingleNode("nyuusha"); if (knameNode.text == "A社") { resultNodes[resultNodes.length] = nyuushaNodes(i).parentNode; } } } 上記のコードで、条件を満たすノードのリストが取得できるはずです。(動作テストはしていません) 何が何でもselectNodesを使えばいいというものではないので、適宜他のメソッドを使い分けましょう。
関連するQ&A
- VB2005でXMLから複数ある要素の項目を取得する方法
VB2005、XMLの初心者です。 下記XMLの「ヤマダタロウ」を抽出するのがうまくいきません。 <Module> <Body> <Item Code= A TableId=001> <Name>ヤマダタロウ</Name> </Item> <Item Code= B TableId=001> <Name>山田太郎</Name> </Item> </Body> </Module> 上記XMLがmsxmlDocとして引数で下記プロシージャに渡されるのですが、selectNodesではなぜか取得できません。 どこか間違っているでしょうか。 Private Sub prvParseXML(Byval msxmlDoc As MSXML2.DOMDocument) Dim NodeList As MSXML2.IXMLDOMNodeList NodeList = msxmlDoc.selectNodes("/Module/Body/Item[@Code='A'][@tableId='001']/Name") End Sub 何かヒントになるようなことでも良いので、皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- データの取得方法
Aテーブル{ id char(3) not null, name varchar(10), a_no char(5), b_no char(5), c_no char(5), date timestamp } Bマスタ{ no char(5), name char(10) } 上記のようなDBがあるのですがAテーブルのa_no、b_no、c_noに入るのはBマスタのnoになります。 下記のようにデータを取得したい場合、どうすればうまく取得できるのでしょうか。 A.id, A.name, A.a_no, カラム名をname1としてB.name, b_no, カラム名をname2としてB.name, c_no, カラム名をname3としてB.name そんなに難しいことではないと思うのですが、考えれば考えるだけ頭の中でこんがらがってきて困っています。 よろしくお願いします。
- ベストアンサー
- MySQL
- エクセルについての質問です。
エクセルについての質問です。 下記のような表があります。 名前 NO 時間 NO 時間 名前 時間 山田 A 10 A 40 山田 10 B 20 鈴木 30 鈴木 A 30 B 60 山田 20 B 10 鈴木 10 C 20 井上 30 井上 B 30 C 20 鈴木 20 左の表から右の表を作成するのに分かりやすい関数がありますでしょうか。 よろしくお願いいたします。
- 締切済み
- その他(ビジネス・キャリア)
- エクセルで検索、並び替えの方法
エクセルで以下のような並び変えはできないでしょうか? エクセルでA列とB列に名前が入っています。 A列、B列の名前は若干違います。 B列の名前をA列に揃えて並び変えることはできないでしょうか? 「処理前」 「処理後」 A B A B 伊藤 山田 伊藤 山田 田中 山田 山田 鈴木 鈴木 鈴木 鈴木 田中 伊集院 田中 田中 伊集院 宜しくお願いします。
- 締切済み
- オフィス系ソフト
- xml
今契約してるサーバーがSQLをつけるとものすごい金額になってしまうので。XMLに挑戦中です。 作ってみたのですが、ソースが間違ってる?のか表示できません、教えてください. name.xml <?xml version="1.0" encoding="shift-jis"?> <test no="1"> <name>test</name> <no>10</no> <tel>123-456-789</tel> </test> test.php <html> <head> <title>sample1</title> </head> <body> <?php $doc->load("name.xml"); $name = $doc->selectSingleNode("test"); $list = $name->selectNodes("*"); $no = $list->item(1); $text = " 番号 " . $no . "<br>"; print $text; ?> </body> </html>
- ベストアンサー
- PHP
- jQueryでxmlを読み込んで、五十音順にソート
jQueryでxmlを読み込んで、五十音順にソート qa6111214でjQueryでXMLを操作する方法について質問させていただいた者です。 たびたび申し訳有りません。質問させていただきます。 jQueryでxmlで読み込んで、五十音順にソートしたいのですが方法がわかりません。 ---------------------------------------------------------------------------------------------------- <data> <item> <link>hoge1.html</link> <name>山田 太郎</name> <syllabary>やまだたろう</syllabary> </item> <item> <link>hoge2.html</link> <name>山田 花子</name> <syllabary>やまだはなこ</syllabary> </item> <item> <link>hoge3.html</link> <name>田中 太郎</name> <syllabary>たなかたろう</syllabary> </item> <item> <link>hoge4.html</link> <name>田中 花子</name> <syllabary>たなかはなこ</syllabary> </item> <item> <link>hoge5.html</link> <name>鈴木 太郎</name> <syllabary>すずきたろう</syllabary> </item> <item> <link>hoge6.html</link> <name>鈴木 花子</name> <syllabary>すずきはなこ</syllabary> </item> </data> ------------------------------------------------------------------------------------------------ というxmlデータをjQueryで読み込んで、五十音順にソートして表示する方法を探しています。 例えば…… ------------------------------------------------------------------------------------------------ <a href="hoge5.html">鈴木 太郎</a> <a href="hoge6.html">鈴木 花子</a> <a href="hoge3.html">田中 太郎</a> <a href="hoge4.html">田中 花子</a> <a href="hoge1.html">山田 太郎</a> <a href="hoge2.html">山田 花子</a> ------------------------------------------------------------------------------------------------ といった具合に書き出したいのですが…… ご教授願います。また、参考になりそうな書籍/サイトはありますでしょうか。 宜しくお願い致します。
- ベストアンサー
- JavaScript
- Postgresqlでのテーブル作成について
どなたかご教授願えますでしょうか。 <マスタ> <トランザクション> Kaisya Kojin-NO Simei kaisya saiban-NO Kojin-NO AAA 0001 名前A1 AAA 1 0002 AAA 0002 名前A2 AAA 2 0001 BBB 0001 名前B1 ⇒ BBB 1 0001 BBB 0002 名前B2 BBB 2 0002 CCC 0001 名前C1 CCC 1 0002 CCC 0002 名前C2 CCC 2 0001 マスタのkaisyaとKojin-N0をキーにするべく各項目指定の後に constraint KEY_NAME primary key ( Kojin-NO, kaisya ) として複合のキー設定をしてテーブルを作成しました。このマスタテーブルは作成できたのですが、 トランザクションを作成しようとCreate Tableを使用しましたが ERROR:relation "Key_name" already Exists となり作成できません。 ちなみにトランザクションのsaiban-NO、KaisyaがPrimary Key Kaisyaとkojin-NOをマスタの外部キーとして設定しようとしていました。 そもそもこの考え方が間違っているのでしょうか。
- 締切済み
- PHP
- MYSQLのレコードを上書きしたいのですが…
phpからMYSQL5に接続して以下のようなデータベースを作りました。 no name comment ←カラム名 1 山田 起きる 2 山田 叫ぶ 3 山田 寝る これを上書きして、 no name comment 1 山田 食べる 2 山田 遊ぶ 3 山田 寝る というようにレコードを更新したいのです。 しかし、どうやっても1、2、3の後に4、5、6と続いてしまいます。 「no」カラムにはauto_increment+primary keyを設定しています。 phpで構文を送る前に mysql_query("alter table db1 auto_increment=0"); を設定してみたり、 mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); や mysql_query("replace into db1 (name,comment) value ('山田','$comment')"); を試してみましたが、上手く行きませんでした。 現在は、 mysql_query("delete from db1"); mysql_query("alter table db1 auto_increment=0"); ---php処理--- mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); というように、二度目の書き込みを行う前に一旦テーブル内のレコードを すべて削除して書きなおすという方法を取っています。 しかし、数が多くなると一旦削除する作業を行うと処理が遅くなってしまうと思いますので、上書きしてデータベースを更新したいと思っているのですが、どのようにすればよいでしょうか?
- ベストアンサー
- MySQL
- SELECT命令
SELECT A.code, A.name, B.name FROM DB_A A, DB_B B WHERE A.code = B.code; この時、DB_BにCODEが存在しなくてもDB_Aの情報は取得したのですが「+」を付加して条件を満たす方法があったと思うのです? 宜しくお願いしま。
- ベストアンサー
- その他(データベース)
- アクセスのクエリについて教えてください。
アクセス初心者です。 AテーブルとBテーブルを合体したCテーブルを作成したいのですが、 クエリを使って1工程でできませんでしょうか。 レコードが1000を越えると大変な作業になりますので、 何か良い方法を探しております。宜しくお願いします。 Aテーブル 顧客No 名前 住所 1 鈴木 東京 2 田中 横浜 Bテーブル 顧客No 名前 電話 1 鈴木 03 3 山田 044 Cテーブル 顧客No 名前 住所 電話 1 鈴木 東京 03 2 田中 横浜 3 山田 044 以上
- ベストアンサー
- その他(データベース)