使用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