使用XMLParser
(检查this page),很好地工作的是XmlPullParser。
您可以初始化解析器:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader ("<foo>Hello World!</foo>"));
比你可以在使用
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
/*YOUR CODE HERE*/
eventType = xpp.next();
}
完整XML
对象在哪里,你可以检查迭代eventTypes
:START_DOCUMENT
,START_TAG
,END_TAG
,和TEXT
。
一旦你在开始或结束标签,你可以得到使用getName()
标签的名称,在TEXT
事件类型,你可以使用getText()
,你可以使用,在BEGIN_TAG
,功能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");
结帐这样的回答:http://stackoverflow.com/a/7607445/2674225您可以分析它到'节点'并获取属性(http://developer.android.com/reference/org/w3c/dom/Node.html#getAttributes())。 或者您可以简单地拆分它并手动读取属性,但它不那么优雅;) – rzysia
感谢您的回复,但我没有得到你。我想读取每个属性值。你提到的代码不完全属于同一个。我如何通过拆分来实现这一点? – katamaraju
当你将这个xm解析为Node时,你将能够通过方法'getAttributes()'得到所有这个节点属性,它将把它们作为'NamedNodeMap'对象返回。你必须知道,everythinh是一个节点 - 甚至attibutes都是节点。而且你把它们全部放在这个返回的对象中。然后你可以简单地迭代它。在'for'循环中,你可以通过'obj.item(i)'和call来访问属性。 'getNodeName()'或'getNodeValue()'。 – rzysia