2011-07-17 8 views
0

Javaを使用してXMLファイルを読み込む方法を理解しようとしています。私は1つのXMLタグを持っていて、それを有効にして、メソッドに真を渡し、別のメソッドに数値を提供する別のXMLタグを渡すことができます。私は自分のXMLファイル内に行を置いてtrueを渡し、その数値をvalueofnumberとして渡したいと思います。私は、XMLファイルから数の値を抽出する方法として混乱していますXMLとJava ...値とインデックスの混乱?

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException 
    { 
    if (localName.equals("enabled")){ 
     currentConfig.setenabled(true); 
    } 
    else if (localName.equals("number")){ 
     currentConfig.setnumber(Double.parseDouble(attributes.getValue("number"))) 
    } 
} 

:私は、XMLファイル内の特定の文字列のif文のテストのシリーズを使用してXMLファイルを読み出しています。現在、getIndex()も試してみると何も表示されないというエラーが表示されています。事前に

おかげで非常に多くの

+1

要素名(localName)と属性値を混同していますか?あなたが読もうとしているXMLを表示してください。 –

+1

'getIndex'の呼び出しがありません。 'attributes'や' localName'がどこに宣言/初期化されているのか分かりません。すべての関連コードをお知らせください。 –

+0

サンプルXMLに貼り付けることはできますか? – jiggy

答えて

1

getValue() methodあなたが呼んでいるが形式のXML名前空間+ローカル名を意味し、修飾名をとります。あなたのXML文書はおそらくネームスペースを使用しています。名前空間がない場合は、other getValue() methodを使用し、名前空間にnullを渡す必要があります。それはあなたが使っているパーサとそれがどのように構成されているかに大きく依存します。あなたはより良いあなたのためにこれらのニュアンスの世話をより高いレベルの構文解析ライブラリに移動することをお勧めされたい:

  • StAXはSAXよりもはるかに高いレベルではありませんが、それはまだ親しみやすいと一般的に、より直感的なを持っていますインタフェース。
  • JDOMは、DOMパーサーではやや効率が落ちますが、XMLの解析は非常に簡単です。
  • Commons Digesterは、ルールベースのXML解析エンジンの一種です。この要素または属性に遭遇したときに何をしたいのかに関するルールを設定してから、ダイジェスターを実行します。 POJOの作成とポピュレーションのように、メソッド呼び出しは設定できるルールの1つです。
  • JAXBまたはXStreamは、最小限の設定で推測を完全に削除し、XMLをPOJOに直接バインドします。その後、XMLを扱う必要もなく、代わりに通常のオブジェクトを扱うことができます。

編集:(XMLサンプルに基づいています)あなたの「番号」は属性ではありません。これはネストされた要素です。そのため、Attributesオブジェクトから取得するのが難しいです。私の他の図書館の助言は依然として立っています。