Android XmlPullParser如何获得res/raw/xml/xmlfilename?
我是编程新手,因此,如果我在下面的段落中出错,请首先纠正我: Android中主要使用三种xml解析器:Sax、Dom和XmlPullParser。最后一个选项,作为外部资源存在。是Android的“核心”,因此工作速度更快,但功能有限 好的,这是我的问题,我稍微修改了下面链接中提供的代码 我做了以下工作:Android XmlPullParser如何获得res/raw/xml/xmlfilename?,android,xmlpullparser,Android,Xmlpullparser,我是编程新手,因此,如果我在下面的段落中出错,请首先纠正我: Android中主要使用三种xml解析器:Sax、Dom和XmlPullParser。最后一个选项,作为外部资源存在。是Android的“核心”,因此工作速度更快,但功能有限 好的,这是我的问题,我稍微修改了下面链接中提供的代码 我做了以下工作: import java.io.IOException; import java.io.StringReader; import org.xmlpull.v1.XmlPullParser;
import java.io.IOException;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
public class xmlPParser
{
public String texte;
public xmlPParser (String arg)
throws XmlPullParserException, IOException
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput( new StringReader ( arg ) );
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT)
{
//if(eventType == XmlPullParser.START_DOCUMENT) { System.out.println("Start document");}
// else if(eventType == XmlPullParser.START_TAG) { System.out.println("Start tag "+xpp.getName()); }
//else if(eventType == XmlPullParser.END_TAG) { System.out.println("End tag "+xpp.getName()); }
if(eventType == XmlPullParser.TEXT){ texte = xpp.getText(); } //{ System.out.println("Text "+xpp.getText());}
eventType = xpp.next();
}
//System.out.println("End document");
}
public String getTexte()
{
String returnTexte = texte;
return returnTexte;
}
}
在另一个java文件中,我可以通过以下方式调用解析器:
public xmlPParser myxpp;
myxpp=newxmlpparser(“Hi-five!!”);
最后一行:我希望能够让解析器转到文件,而不是向其传递字符串。我该怎么做?
我不知道如何利用这个机会
getResources().getXml()是否假设我正在使用Android pullParser,我现在不确定是否会使用它?XmlPullParser不是真正的解析器,它是一种解析器类型的接口,称为“拉”解析器 函数getResources().getXml()返回用于“解析”XML资源的XmlPullParser的实现。这不是一个真正的XML解析器——事实上,原始XML文件是在构建时解析的,然后才被构建到应用程序中,而这个“XML解析器”所做的只是在调用其API时返回预消化的XML结构。这是Android上可用的最快的“XML”解析器(因为它实际上不解析任何东西),但需要在构建应用程序时编译XML文档 从XmlPullParserFactory.newInstance()获得的XmlPullParser的另一个实现不是“受限的”——这个实现功能齐全,可以解析您提供给它的任何原始XML文档 至少有一次(不确定是否仍然如此),SAX解析器和XmlPullParserFactory.newInstance()返回的解析器实际上都构建在相同的底层实现上,即expat。expat解析器是一个“push”解析器(与SAX的模型相同),因此使用它的最有效方法是使用saxapi。XmlPullParser版本与SAX相比有更多的开销,因为它需要将底层推送语义转换为拉接口
如果有帮助的话--push意味着它将解析后的数据推送给您(您实现的回调会给您每个标记和其他文档元素),而pull意味着您调用解析器来检索每个元素。谢谢,这个答案确实消除了我在解析xml时的一些困惑。当我继续努力的时候,它会变得更清晰。
myxpp = new xmlPParser("<foo>Hi five !!</foo>");