我是android中的新xml解析。以下是我的xml字符串。我从onActivityResult方法获取这个XML字符串数据。所以下面的数据保存在一个字符串变量中,如resultText;我想从下面的字符串中读取每个属性值。
WHILE
我想读取该单个节点的每个属性。提前谢谢。
答案 0 :(得分:0)
使用XMLParser
(检查this page),效果很好的是XmlPullParser。
您可以使用以下命令初始化解析器:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput( new StringReader ( "<foo>Hello World!</foo>" ) );
您可以使用
迭代完整的XML
对象
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
/*YOUR CODE HERE*/
eventType = xpp.next();
}
您可以在哪里检查eventTypes
:START_DOCUMENT
,START_TAG
,END_TAG
和TEXT
。
进入开始或结束标记后,您可以使用getName()
获取标记的名称,TEXT
事件类型可以使用getText()
,您可以使用BEGIN_TAG
1}},函数getAttributeCount()
,getAttributeName(index)
和getAttributeValue()
可以获取属于每个标记的所有属性。
根据您的具体情况
您可以使用以下内容:
String xmlString = YOURSTRING_HERE;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput( new StringReader ( xmlString ) );
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());
if (xpp.getName().equals("PrintLetterBarcodeData")){
for (int i=0; i<xpp.getAttributeCount(); i++){
System.out.println("attribute:"+xpp.getAttributeName(i)+" with value: "+xpp.getAttributeValue(i))
//Store here your values in the variables of your choice.
}
}
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
System.out.println("End document");