jer*_*emy 7 xml android file local saxparser
我创建了一个Java应用程序,它打开一个看起来像这样的xml文件:
<AnimalTree>
<animal>
<mammal>canine</mammal>
<color>blue</color>
</animal>
<!-- ... -->
</AnimalTree>
Run Code Online (Sandbox Code Playgroud)
我可以用以下方式打开它:
File fXmlFile = getResources.getXml("res/xml/data.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList animalNodes = doc.getElementsByTagName("animal");
Run Code Online (Sandbox Code Playgroud)
然后我可以简单地创建一个节点,将对象推送到ListArray中,然后在循环ListArray时执行我想要的对象.
for (int temp = 0; temp < animalNodes.getLength(); temp++) {
Node nNode = animalNodes.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
question thisAnimal = new animal();
thisAnimal.mammal = getTagValue("mammal",eElement);
// ...
Run Code Online (Sandbox Code Playgroud)
干净利落!现在只在Android中我不能简单地读取文件" res/xml/data.xml",因为" File();"需要一个String不是integer(id).这是我迷失的地方.有没有办法可以" File();"打开文件,或者如果不使用SAXparser或者这是不可能的XPP?(无论我怎么努力,我都无法理解这两者.)
如果我被迫使用这些方法,有人能给我看一些类似于我的例子的简单代码吗?
如果它在资源树中,它将获得分配给它的ID,因此您可以使用openRawResource函数打开它的流:
InputStream is = context.getResources().openRawResource(R.xml.data);
至于在Android中使用XML,ibm.com上的这个链接是非常彻底的.
请参阅Listing 9. DOM-based implementation of feed parser该链接.
获得输入流(上图)后,可以将其传递给DocumentBuilder的实例:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(this.getInputStream());
Element root = dom.getDocumentElement();
NodeList items = root.getElementsByTagName("TheTagYouWant");
Run Code Online (Sandbox Code Playgroud)
请记住,我个人没有这样做 - 我假设IBM提供的代码有效.
| 归档时间: |
|
| 查看次数: |
26717 次 |
| 最近记录: |