2011-09-14 15 views
-1

JavaでSAXパーサを使用して、属性ベースの解析を行う方法。XMLでのJavaの解析

私は従業員の要素の各属性値を取得したい、次のように私のxmlファイルがある

<?xml version="1.0" encoding="UTF-8"?> 
<employees category="1" type="regular" location="india"> 
    <employee name="xyz" doj="20/12/2001" dob="21/12/1988" salary="12000"></employee> 
    <employee name="xyz" doj="22/12/2003" dob="22/12/1988" salary="18000"></employee> 
    <employee name="xyz" doj="23/12/2002" dob="23/12/1988" salary="15000"></employee> 
    <employee name="xyz" doj="24/12/2003" dob="22/12/1988" salary="17000"></employee> 
    <employee name="xyz" doj="26/12/2005" dob="24/12/1988" salary="12000"></employee> 

</employees> 

と仮定する。助けてください

+11

あなたが提供していることは有用ではありません。あなたの解析コードも表示するのは理にかなっていませんか? –

+1

彼はまた、質問がありません。私は疑問符を見つけることができません... – WarrenFaith

+0

私は質問を編集しました。私を助けてください。 – Som

答えて

4

DefaultHandlerクラスは、開始要素を待機するコールバックを提供し、その要素の属性を表すAttributesオブジェクトを含むシグネチャを持ちます。

startElement(String uri, String localName, String qName, Attributes attributes)

Attributesインタフェースを見ると、私はあなたを助けるためにメソッドを参照してください。

  1. はあなたが興味のある属性を知っていない、とあなたはすべての属性を見たい場合は、あなたがgetLength()を使用する必要があり、各属性getLocalName(int)またはgetQName(int)を見て、その長さにわたってfor-loopを行い、 getValue(int)(すべてintのものが属性リストのインデックスとして使用されます)を呼び出すことによってその価値を見つけることができます。
  2. 興味のある属性がわかっている場合は、getValue(String)を呼び出して、後の属性の文字列名を渡すだけです。ここで

あなたに与えられた要素のすべての属性の名前と値を得ることができ、いくつかのサンプルコードです:

public void startElement(String ns, String localName, String qName, Attributes attrs) throws SAXException { 
    for(int i = 0; i < attrs.getLength(); ++i) { 
     String attrName = attrs.getLocalName(i); 
     String attrValue = attrs.getValue(i); 

     //do stuff with name/value 
    } 
} 
1

あなたがそれに慣れていない場合、SAXプログラミングは非常に混乱することがあります。パーサーの構築は、抽象的なInterface APIに苦労しなければならないため、ややこしいことです。一度それをすべて取得してハンドラを登録すれば、属性にアクセスするのは簡単です。あなたのハンドラクラスはメソッドを実装する必要があります:

public void startElement(String nsUri, String localName, String qName, Attributes attributes) 
     throws SAXException    

属性値はその名前のargで利用できます。