2011-02-01 7 views
0

XMLファイルに存在するタグを知らなくても、XMLファイルを解析する方法はありますか?AndroidでXMLを動的に解析するには?

XMLファイルは入力として与えられ、解析する必要があります。タグが存在しないので、DOM ParserまたはSAXパーサーのいずれかを使用して解析することは困難です。

これを取得する方法はありますか?

おかげで、 シヴァクマールこのため

+3

あなたはあなたが解析したいのかを知っていますか受け取るXML文書の構造がわからない場合? –

+0

実際、XMLファイルには、テキストとイメージの形式のデータが含まれています(バイトコード文字列に変換され、XMLに格納されます)。今私はそのデータを取得し、それを画面上に表示したい! –

答えて

5

私は問題が何であるかはっきりしていません。 Java DOMとSAXパーサーでは、エレメントタグと属性を事前に知る必要はありません。整形式のXMLを解析します。私は、特にAndroid上で解析するXMLに慣れていないんだけど、ここでのチュートリアルでは、パーサは要素タグを知っておく必要があります示しているように見えるし、事前に属性はありません:

http://www.ibm.com/developerworks/opensource/library/x-android/

たとえば、あなたはDOMを使用することができますXML文書を解析してDOMツリーを取得する。要素名がわからないので、特定の子または子孫要素のDOMツリーを要素名で照会することはできませんが、Document.getDocumentElement()およびNode.getChildNodes()などの呼び出しによってツリーを歩くことはできます。 XML文書の解析に起因するその構造化DOMツリーで何をすべきかを知るためのコードまではありますが、DOMパーサ自体は特定の要素のタグと属性が何であるか気にしません。

同様に、XML文書をSAXパーサに送ることができ、SAXはそれをうまく解析します。 SAXは、要素名とその要素の属性のマップを使用してContentHandler.startElement()コールバックを呼び出します。あなたのコードでは、SAXパーサーがXML文書を処理する際に検出する要素と属性をどうするかを決定する必要がありますが、SAXは特定の要素のタグと属性が何であるか気にしません。

質問には、あなたのコードでXMLを解析した結果とどうしたいですか?それを特定しようとしていますか?それをきれいに印刷しようとしていますか?別の形式に変換しようとしていますか?

+3

+1。私はあなたに別の質問を追加したいと思います。あなたがしたいことを本当に知っていますか? –

1

あなたは、単純なファイルとしてそれを読まなければなりません。 BufferedReaderと言ってください。 そして、各行を読む間に、開閉タブまたはパターンマッチングの検索を<>または</>とします。

と残りの文字を読んで、自分のバッファに書き込んでください。要するにそれはあなた自身の生のパーサを開発するようなものです。

しかし、それは確実に機能します。その面倒ですが:

0

あなたは資産フォルダにXMLファイルを取得し、このようなXMLファイルを解析することができます

NodeList root = doc.getElementsByTagName("root"); 
    NodeList nlQuestions = root.item(0).getChildNodes(); 

    QuestionObject[] allQuestions = new QuestionObject[nlQuestions.getLength()]; 

    for (int i = 0; i < nlQuestions.getLength(); i++){ 
     Node question = nlQuestions.item(i); 
     NodeList childNodes = question.getChildNodes(); 

     QuestionObject x = new QuestionObject(); 

     for (int j = 0; j < childNodes.getLength(); j++){ 
      Node child = childNodes.item(j);    

      if (child.getNodeName() !="#text"){ 
       Questions t = Questions.valueOf(child.getNodeName()); 
関連する問題