在我的应用程序中我正在解析xml文件。在xml文件中,我有50个同名question
的标签,现在我想将所有名为question的标签存储为数组....
在保存的那些标签中,我只想在文本视图中放置一个问号标签....
如何执行此操作....请帮助我.....
答案 0 :(得分:4)
公共类CustomHandler扩展了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;
};
}
}
答案 1 :(得分:0)
您可以使用DOM解析器,这里是DocumentBuilder类的link。
使用parse
中的DocumentBuilder
方法并获取Document
后,您可以使用此类函数将项目设为NodeList
:
public static NodeList getNodesByName(Document doc, String nodeName)
{
Element docEle = doc.getDocumentElement();
NodeList list = docEle.getElementsByTagName(nodeName);
return list;
}
在您的情况下,您将通过解析XML传递您创建的Document对象,然后将question
作为nodeName
传递。
获得NodeList后,可以使用for循环和.item()
方法迭代它。
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.
}
}
答案 2 :(得分:0)
This answer似乎很容易适应您的需求。在示例中,问题存储在地图中,但很容易将其更改为ArrayList
或数组。