难度在使用XML解析器拉
问题描述:
我试图解析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请求取消打印“?
答
以下行可能工作在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());
}
}
好吧,我会尝试这个 – user1387035 2012-08-02 11:30:25
我的代码是使用上面的代码给出单词的价值。我如何得到意义? – user1387035 2012-08-02 11:39:26
@ user1387035:查看我的更新。但是,与使用pull解析器相比,解析XML数据可能更好。 – Codo 2012-08-02 11:48:27