[英]Parsing XML from website to an Android device
我正在啟動一個Android應用程序,它將從Web解析XML。 我已經創建了一些Android應用程序,但他們從未涉及解析XML,我想知道是否有人有關於最佳方式的任何提示?
這是一個例子:
try {
URL url = new URL(/*your xml url*/);
URLConnection conn = url.openConnection();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(conn.getInputStream());
NodeList nodes = doc.getElementsByTagName(/*tag from xml file*/);
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
NodeList title = element.getElementsByTagName(/*item within the tag*/);
Element line = (Element) title.item(0);
phoneNumberList.add(line.getTextContent());
}
}
catch (Exception e) {
e.printStackTrace();
}
在我的示例中,我的XML文件看起來有點像:
<numbers>
<phone>
<string name = "phonenumber1">555-555-5555</string>
</phone>
<phone>
<string name = "phonenumber2">555-555-5555</string>
</phone>
</numbers>
我將/*tag from xml file*/
替換為/*tag from xml file*/
中的“phone”和/*item within the tag*/
以及“string”。
我知道有三種類型的解析:DOM,SAX和XMLPullParsing。
在我的示例中,您需要URL和XML元素的父節點。
try {
URL url = new URL("http://www.something.com/something.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList1 = doc.getElementsByTagName("parent node here");
for (int i = 0; i < nodeList1.getLength(); i++) {
Node node = nodeList1.item(i);
}
} catch(Exception e) {
}
也試試這個 。
我總是使用w3c dom類。 我有一個靜態幫助器方法,我用它來解析xml數據作為字符串,並返回給我一個Document對象。 你得到的xml數據可能會有所不同(網絡,文件等),但最終你把它作為一個字符串加載。
像這樣的東西......
Document document = null;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
{
builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(data));
document = builder.parse(is);
}
catch (SAXException e) { }
catch (IOException e) { }
catch (ParserConfigurationException e) { }
有不同類型的解析機制可用,一個是SAX, 這是SAX解析示例 ,第二個是DOM解析這里是DOM解析示例。 。 從你的問題來看,目前尚不清楚你想要什么,但這些可能是一個很好的起點。
如果XML文件不是太大,我會使用DOM解析器,它不如SAX高效,因為在這種情況下它更容易。
我只做了一個Android應用程序,涉及XML解析。 從SOAP Web服務接收的XML。 我用過XmlPullParser。 來自Xml.newPullParser()的實現有一個錯誤,即對文檔的承諾,對nextText()的調用並不總是前進到END_TAG。 有一個解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.