how to store an xml tag as an array in java

…衆ロ難τιáo~ 提交于 2019-12-19 12:08:11

问题


in my app i am parsing an xml file. In the xml file i am having 50 tags of the same name question , now i want to store all the tag named as question as an array....

Among those tags saved i want only one question tag to be placed in a text view....

how to perform this....pls help me.....


回答1:


public class CustomHandler extends DefaultHandler {

private ArrayList<String> questionList;
private boolean questionBuffering;
private StringBuilder sb;



@Override
public void startDocument() throws SAXException {
questionList = new ArrayList<String>();
} 

@Override
public void endDocument() throws SAXException {
} 

@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
    if (localName.equals("question")) {
        questionBuffering = true;
    }

}


@Override
public void characters(char ch[], int start, int length) {
    if(questionBuffering) {
        sb.append(ch, start, length);
    }

} 

@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
    if (localName.equals("question")) {
        questionBuffering = false;
    questionList.add(sb.toString());
    }
}

public ArrayList<String> getResult() {
    return questionList;
    };
}

}




回答2:


This answer seems easily adaptable to your needs. In the example the questions are stored in a map, but it is easy to change this to an ArrayList or an array.




回答3:


You can use the DOM parser, here is a link to the DocumentBuilder class.

Once you use the parse method out of DocumentBuilder and get your Document you can use a function like this to get the items as a NodeList:

    public static NodeList getNodesByName(Document doc, String nodeName)
    {
            Element docEle = doc.getDocumentElement();
            NodeList list = docEle.getElementsByTagName(nodeName);
            return list;
    }

In your case you would pass in the Document object you created by parsing the XML and then question as your nodeName.

Once you have your NodeList, you can iterate through it using a for loop and the .item() method.

            if(list != null && list.getLength() > 0) {
                for(int i = 0 ; i < list.getLength();i++) {
                    Element element = (Element)list.item(i);
                    String textVal = element.getFirstChild().getNodeValue();
                    //Once you get the value you can put it into your
                    //array or just use it here.
                }
            }


来源:https://stackoverflow.com/questions/5488185/how-to-store-an-xml-tag-as-an-array-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!