如何在java中将xml标记存储为数组

时间:2011-03-30 15:08:05

标签: java arrays xml-parsing

在我的应用程序中我正在解析xml文件。在xml文件中,我有50个同名question的标签,现在我想将所有名为question的标签存储为数组....

在保存的那些标签中,我只想在文本视图中放置一个问号标签....

如何执行此操作....请帮助我.....

3 个答案:

答案 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或数组。