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

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

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

如何执行此….请帮助我…..

公共类CustomHandler扩展DefaultHandler {

 private ArrayList questionList; private boolean questionBuffering; private StringBuilder sb; @Override public void startDocument() throws SAXException { questionList = new ArrayList(); } @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 getResult() { return questionList; }; } 

}

这个答案似乎很容易适应您的需求。 在示例中,问题存储在地图中,但很容易将其更改为ArrayList或数组。

您可以使用DOM解析器,这里是DocumentBuilder类的链接 。

DocumentBuilder使用parse方法并获取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. } }