首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中使用dom解析器解析xml?

如何在android中使用dom解析器解析xml?
EN

Stack Overflow用户
提问于 2013-01-10 15:50:49
回答 3查看 3.3K关注 0票数 0

这是我的xml..我想使用dom获取apikey,parser...any帮助应该是appreciated..thanx。

代码语言:javascript
复制
 <user>
    <company>My company</company>
    <access-level nil="true"/>
    <last-activity-at nil="true"/>
    <api-key>here is my api key </api-key>
    <email-address>myemail@gmail.com</email-address>
    <id type="integer">42569</id>
 </user>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-10 16:11:46

嘿,朋友们,我得到的解决方案如下..

代码语言:javascript
复制
try {

        NodeList nodes = doc.getElementsByTagName("user");

        for (int i = 0; i < nodes.getLength(); i++) {
            Element element = (Element) nodes.item(i);

            NodeList assignee_ = element.getElementsByTagName("api-key");
            Element line = (Element) assignee_.item(0);
            statuses=(Utility.getCharacterDataFromElement(line));

        }

    } catch (Exception e) {
        e.printStackTrace();
    }
票数 0
EN

Stack Overflow用户

发布于 2013-01-10 15:53:54

您可以访问此链接,它可能会对您有所帮助

代码语言:javascript
复制
public Document getDomElement(String xml){
        Document doc = null;
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {

            DocumentBuilder db = dbf.newDocumentBuilder();

            InputSource is = new InputSource();
                is.setCharacterStream(new StringReader(xml));
                doc = db.parse(is);

            } catch (ParserConfigurationException e) {
                Log.e("Error: ", e.getMessage());
                return null;
            } catch (SAXException e) {
                Log.e("Error: ", e.getMessage());
                return null;
            } catch (IOException e) {
                Log.e("Error: ", e.getMessage());
                return null;
            }
                // return DOM
            return doc;
    }

有关更多信息,请查看链接。

http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/

票数 1
EN

Stack Overflow用户

发布于 2013-01-10 19:51:35

我已经在实际的应用程序中使用了解析xml,下面是我的方法

代码语言:javascript
复制
 public class XMLParser {
        // constructor
                public XMLParser() {

                }

                /**
                 * Getting XML from URL making HTTP request
                 * @param url string
                 * */
                public String getXmlFromUrl(String url) {
                    String xml = null;

                    try {
                        // defaultHttpClient
                        DefaultHttpClient httpClient = new DefaultHttpClient();
                        HttpPost httpPost = new HttpPost(url);

                        HttpResponse httpResponse = httpClient.execute(httpPost);
                        HttpEntity httpEntity = httpResponse.getEntity();
                        xml = EntityUtils.toString(httpEntity);

                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    } catch (ClientProtocolException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    // return XML
                    return xml;
                }

                /**
                 * Getting XML DOM element
                 * @param XML string
                 * */
                public Document getDomElement(String xml){
                    Document doc = null;
                    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                    try {

                        DocumentBuilder db = dbf.newDocumentBuilder();

                        InputSource is = new InputSource();
                            is.setCharacterStream(new StringReader(xml));
                            doc = db.parse(is); 

                        } catch (ParserConfigurationException e) {
                            Log.e("Error: ", e.getMessage());
                            return null;
                        } catch (SAXException e) {
                            Log.e("Error: ", e.getMessage());
                            return null;
                        } catch (IOException e) {
                            Log.e("Error: ", e.getMessage());
                            return null;
                        }

                        return doc;
                }

                /** Getting node value
                  * @param elem element
                  */
                 public final String getElementValue( Node elem ) {
                     Node child;
                     if( elem != null){
                         if (elem.hasChildNodes()){
                             for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                                 if( child.getNodeType() == Node.TEXT_NODE  ){
                                     return child.getNodeValue();
                                 }
                             }
                         }
                     }
                     return "";
                 }

                 /**
                  * Getting node value
                  * @param Element node
                  * @param key string
                  * */
                 public String getValue(Element item, String str) {     
                        NodeList n = item.getElementsByTagName(str);        
                        return this.getElementValue(n.item(0));
                    }




    }

在主类中,我这样做:

代码语言:javascript
复制
ArrayList<HashMap<String, String>> booksList = new ArrayList<HashMap<String, String>>();

        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML from URL
        Document doc = parser.getDomElement(xml); // getting DOM element

        NodeList nl = doc.getElementsByTagName(KEY_MAG);
        // looping through all song nodes <song>
        for (int i = 0; i < nl.getLength(); i++) {
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();
            Element e = (Element) nl.item(i);
            // adding each child node to HashMap key => value
            map.put(KEY_ID, parser.getValue(e, KEY_ID));
            map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
            map.put(KEY_CATG, parser.getValue(e, KEY_CATG));
            //map.put(KEY_AUTOR, "Auteur:"+parser.getValue(e, KEY_AUTOR));
            //map.put(KEY_PRICE, parser.getValue(e, KEY_PRICE)+"DT");
            map.put(KEY_PRICE, parser.getValue(e, KEY_PRICE));

            map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

            // adding HashList to ArrayList
            booksList.add(map);
        }

这是我的vars:

代码语言:javascript
复制
static final String URL = "http://192.168.1.100/vos_magazines1.xml";
static final String KEY_MAG = "item"; // parent node
static final String KEY_ID = "id_mag";
static final String KEY_TITLE = "titre_mag";
static final String KEY_PRICE = "prix_mag";
static final String KEY_CATG = "cat_mag";
static final String KEY_THUMB_URL = "pic_mag";

希望我的代码能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14253076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档