【发布时间】:2015-01-18 06:52:23
【问题描述】:
我正在尝试解析与 res 文件夹下的 string.xml 文件类似的 xml 文件。但是在解析时我遇到了异常。 下面是我的xml文件。
<resources>
<!-- Enrollment Messages -->
<string name="configure_email_text">No corporate email accounts have been configured on this device. To configure them, click <b>Configure Email</b></string>
<string name="invalid_credentials">Authentication failed. Enter valid credentials.</string>
<string name="invalid_passcode">Authentication failed. Enter valid Passcode.</string>
<string-array name="lang_support">
<item>en_US</item>
<item>en_GB</item>
</string-array>
<string name="picker_combined_view_fmt">Combined view (<xliff:g id="count">%s</xliff:g>)</string>
</resources>
下面是我用来解析 XML 的代码。
private void loadXML()
{
// TODO Auto-generated method stub
InputStream ins = null;
try{
//Debug.startMethodTracing("parsingdetail");
ins=getAssets().open("strings.xml");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
xpp.setInput(ins, null);
parseXml(xpp);
int j=hMap.size();
if(j>0){
System.out.println("Anuj Kumar Jha "+j);
}
}catch(XmlPullParserException e){
System.out.println("anuj kumar jha"+e);
e.printStackTrace();
}catch(IOException e){
System.out.println("anuj kumar jha"+e);
e.printStackTrace();
}
finally{
if(ins!=null){
try {
ins.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
private void parseXml(XmlPullParser parser) throws XmlPullParserException,IOException
{
// TODO Auto-generated method stub
int eventType=parser.getEventType();
while(eventType!=XmlPullParser.END_TAG){
String key=null;
String value=null;
switch(eventType){
case XmlPullParser.START_TAG:
String name=parser.getName();
if(name.equalsIgnoreCase("string")){
key=parser.getAttributeValue(null,"name");
value=parser.nextText();
hMap.put(key, value);
if(parser.getEventType()!=XmlPullParser.END_TAG){
parser.nextTag();
}
}
}
eventType=parser.next();
}
}
下面是我得到的例外。
01-18 12:19:10.506: I/System.out(16115): anuj kumar jhaorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG <b>@5:137 in java.io.InputStreamReader@42b54168)
我认为这是因为第一个字符串标签中的标签。如何解决这个问题?
【问题讨论】:
-
发布
parseXml()的内容。 -
您的 xml 无效。 test here
-
仔细检查您是否正在解析预期的 XML。由于没有遇到特定元素的结束标记,因此解析失败。
-
发生这种情况是因为 标签嵌套在
标签内。但我需要将数据呈现在整个 标记中。 -
parseXml() 的代码是什么?还是从哪里来的?
标签: java android xml android-xmlpullparser