リスト3:XML文書から商品検索を行うjavaスクリプト~finditem.js


//
// finditem -- フォームから部品IDを受け取って該当するデータを返す
//
function finditem(form, xmldocument)
{
    var fname = form.fname.value,      // 元データを記録したXML文書名
        output = form.output,          // 結果表示用テキストボックス
        itemId = form.itemId.value;    // フォームに入力された部品ID

    output.value = "";                // テキストを初期化

  // XML文書を読み込む
    var document = parse(fname, xmldocument),
        topLevel = document.documentElement;    // ルートノードを取得
    searchItem(topLevel, output, itemId);        // 検索処理
}

//
// データアイランドにXML文書のリストを読み込む
//
function parse(docname, xmldocument)
{
  // 文書の読み込み
    xmldocument.async = false;
    xmldocument.load(docname);

    if(xmldocument.parseError.errorCode != 0)
      alert(xmldocument.parseError.reason);

    return xmldocument;
}

//
// リストから品番がitemIdと一致するノードを探す
//
function searchItem(node, output, itemId)
{
  var child,        // 子ノードを保持するオブジェクト
      i,
      text = "";    // 検索結果(表示用)

  // 子ノードの数だけ繰り返す
  for(i = 0;i < node.childNodes.length;i++)
  {
    // ルートから1つ下のノードを処理対象に
    child = node.childNodes(i);  // 最初のレコードを処理
    // 最初の要素(部品ID)を調べる
    if(child.childNodes.item(0).text == itemId)
    {
      // 一致したら文字列を生成
      text = makeList(child);
      break;
    }
  }
  if(text == "") // 該当レコードがなかったとき
    text = "データが見つかりません。" +"\r";
  output.value = text;
}

//
// 一致したノードの要素から文字列を作る
//
function makeList(node)
{
var textList = "";
  // 3つの要素に対して、要素名と値とを連結
  textList += "部品ID:" + node.childNodes.item(0).text + "\r";
  textList += "部品名:" + node.childNodes.item(1).text + "\r";
  textList += "単 価:" + node.childNodes.item(2).text + "円" + "\r";
  return textList
}


本文へ戻る