1

ガイドの後でコードをこれに変更しましたが、アプリがハングします...ここからの次のステップは何ですか?getXMLはから呼び出されます

Document xml = XMLemailF.getXML();

    public static Document getXML(){     
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    // get a document builder
    DocumentBuilder db = null;
    try {
        db = dbf.newDocumentBuilder();
    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    //parse using builder to get DOM representation of the XML file
    Document doc = null;
    try {
        doc = db.parse("/xxxxxx/res/xml/email.xml");
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return doc;

}

これは呼ばれます

public static int numResults(Document doc){     
    Node results = doc.getDocumentElement();
    int res = -1;

    try{
        res = Integer.valueOf(results.getAttributes().getNamedItem("count").getNodeValue());
    }catch(Exception e ){
        res = -1;
    }

    return res;
}

これを通して

...
Document xml = XMLemailF.getXML();

    int numResults = XMLemailF.numResults(xml);

    if((numResults <= 0)){
        Toast.makeText(contactus_email.this, "No results found", Toast.LENGTH_LONG).show();  
        finish();
    }

    NodeList nodes = xml.getElementsByTagName("result");

    for (int i = 0; i < nodes.getLength(); i++) {                           
        HashMap<String, String> map = new HashMap<String, String>();    

        Element e = (Element)nodes.item(i);
        map.put("email", XMLemailF.getValue(e, "email"));
        map.put("line1", XMLemailF.getValue(e, "line1"));
        mylist.add(map);
...

何か案は?

4

4 に答える 4

0

これは、 SAXParserを使用してsdcard上のxmlファイルを読み取る方法です

public static RSSFeed parseLocalXml(String filename){
    try {



        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(true);

        SAXParser parser = factory.newSAXParser();

        XMLReader xmlreader = parser.getXMLReader();

        RSSHandler theRssHandler = new RSSHandler();

        xmlreader.setContentHandler(theRssHandler);

        InputSource is = new InputSource(new FileInputStream(filename));

        xmlreader.parse(is);

        return theRssHandler.getFeed();//this is handler that reads trough xml nodes
    } catch (Exception ee) {

        return null;
    }
}
于 2012-12-04T14:06:15.317 に答える
0

ローカル ファイルから xml DOM を取得する必要がありますか? 私は正しく理解していますか?

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new FileInputStream("/path/to/your/file.xml");

または

Document doc = builder.parse(getClass().getResourceAsStream("/path/to/your/resource.xml"));
于 2012-12-04T13:49:51.967 に答える
0

もちろんできます

次のようなものを試してください:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

// get a document builder
DocumentBuilder db = dbf.newDocumentBuilder();

//parse using builder to get DOM representation of the XML file
Document doc = db.parse("yourFile.xml");

詳細については、これらのクラスの javadoc を参照してください。

于 2012-12-04T13:51:35.050 に答える
0

次のようにapplication.getResourceAsStream("your file name")を使用します。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(application.getResourceAsStream("file.xml"));
于 2014-03-21T16:47:23.753 に答える