需要帮助解释XML解析的基础知识

时间:2011-04-19 13:13:48

标签: android xml

我在Android中阅读过很多关于XML解析的文章。但是,所有这些都只是代码而没有任何解释。我是Android(甚至Java)的新手,但是,我已经使用.NET很长一段时间了。所以请向我解释一些课程:

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

他们做了什么?

xr.parse(new InputSource(sourceUrl.openStream()));

这解析了来自Internet的XML文件。如何解析res / raw中的XML文件?甚至在SD卡中使用XML文件?

在.NET中是否有像XMLDocument这样的类?如何将XML文件写入SD卡?

谢谢。

2 个答案:

答案 0 :(得分:1)

前三行只是设置了一个XML解析器。解析器的变体是一个流解析器,它不需要完整的输入作为内存中的树(这将是一个dom解析器),但它在流式传输时读取xml数据。

从资源文件夹中读取您可以使用该代码的内容:

  AssetManager assetManager = context.getAssets();
        try {
            InputStream is = assetManager.open("1.xml");
            board = new Board();
            board.loadFromXmlInputStream(is);
            is.close();

其中board.loadFromXmlInputStream(is);在内部调用您的上述3行代码,然后调用xr.parse(new InputSource(is)

参见例如SampleView用于上述行和Board

请注意,上面的代码不足以处理XML - 您还需要一些回调(如Board类中显示的那些)。

作为替代方案,您还可以使用DOM解析器,在内存中创建XML的树表示,然后您可以走。

答案 1 :(得分:0)

可能有助于您了解的是,您可以轻松地将包含XML的标准字符串传递到XML Handler intsead,从而提供来自URL的输入流。这可能有助于您从SD卡或任何文件等打开一些XML字符串。

你可以简单地做这样的事情:

xr.parse(new InputSource(Utils.stringToInputStream(xmlString)));

在我的Utils.java文件类中,只是将字符串转换为InputStream的方法:

public static InputStream stringToInputStream(String str) throws UnsupportedEncodingException {
  return new ByteArrayInputStream(str.getBytes("UTF-8"));
}

我也知道你说你读了很多教程,但我发现this tutorial非常有帮助。

希望有所帮助