将XML从网站解析为Android设备

我正在启动一个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文件看起来有点像:

   555-555-5555   555-555-5555   

我将/*tag from xml file*/替换为/*tag from xml file*/中的“phone”和/*item within the tag*/以及“string”。

我总是使用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解析示例。 。 从你的问题来看,目前尚不清楚你想要什么,但这些可能是一个很好的起点。

我知道有三种类型的解析: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) { } 

也试试这个 。

如果XML文件不是太大,我会使用DOM解析器,它不如SAX高效,因为在这种情况下它更容易。

我只做了一个Android应用程序,涉及XML解析。 从SOAP Web服务接收的XML。 我用过XmlPullParser。 Xml.newPullParser()的实现有一个错误,即对文档承诺,对nextText()的调用并不总是前进到END_TAG。 有一个解决方案。