2012-08-02 68 views
2

我试图解析XML文件:难度在使用XML解析器拉

<?xml version="1.0"?> 
<root> 
    <command> 
     <word>cancel</word> 
     <explanation>cancel print requested with lp</explanation> 

    </command> 
    <command> 
     <word>cat file</word> 
     <explanation>Display the file</explanation> 

    </command> 
</root> 

我使用的XML解析器拉为this.My程序

package com.example.androidsample2; 

import java.io.IOException; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import android.app.Activity; 
import android.content.res.Resources; 
import android.content.res.XmlResourceParser; 
import android.os.Bundle; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TextView myXmlContent = (TextView)findViewById(R.id.my_xml); 
     String stringXmlContent; 
     try { 
      stringXmlContent = getEventsFromAnXML(this); 
      myXmlContent.setText(stringXmlContent); 
     } catch (XmlPullParserException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    private String getEventsFromAnXML(Activity activity) 
    throws XmlPullParserException, IOException 
    { 
     StringBuffer stringBuffer = new StringBuffer(); 
     Resources res = activity.getResources(); 
     XmlResourceParser xpp = res.getXml(R.xml.xmlfile); 
     xpp.next(); 
     int eventType = xpp.getEventType(); 
     String tag; 
     while ((eventType = xpp.next()) != XmlPullParser.END_DOCUMENT) 
     { 
      if(XmlPullParser.START_TAG==eventType) 
      { 
       tag=xpp.getName(); 
       //stringBuffer.append("\n"+tag); 
       if(tag=="word") 
       { 
        eventType=xpp.next(); 
        stringBuffer.append("\n"+xpp.getText().toString()); 
       } 
      } 

     } 
     return stringBuffer.toString(); 

    } 
} 

我如何才能获得“解释“.ie我如何通过使用”取消“来获得”用lp请求取消打印“?

回答

4

以下行可能工作在C#中,但没有在Java中:

if(tag=="word") 

你应该写:

if (tag.equals("word")) 

更新:

String word = null; 
while ((eventType = xpp.next()) != XmlPullParser.END_DOCUMENT) 

    ... 

    if (tag.equals("word")) 
    { 
     eventType = xpp.next(); 
     word = xpp.getText(); 
    } 
    else if (tag.equals("explanation")) 
    { 
     eventType = xpp.next(); 
     if ("cancel".equals(word)) 
     { 
      stringBuffer.append("\n" + xpp.getText()); 
     } 
    } 
+0

好吧,我会尝试这个 – user1387035 2012-08-02 11:30:25

+0

我的代码是使用上面的代码给出单词的价值。我如何得到意义? – user1387035 2012-08-02 11:39:26

+0

@ user1387035:查看我的更新。但是,与使用pull解析器相比,解析XML数据可能更好。 – Codo 2012-08-02 11:48:27