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....
在我的应用程序中,我正在解析一个xml文件。在xml文件中,我有50个相同名称的标签问题,现在我想将所有名为question的标签存储为数组....
Among those tags saved i want only one question tag to be placed in a text view....
在保存的标签中,我只想在文本视图中放置一个问号标签....
how to perform this....pls help me.....
如何执行此....请帮助我.....
3 个解决方案
#1
4
public class CustomHandler extends DefaultHandler {
公共类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;
};
}
}
#2
0
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.
这个答案似乎很容易适应您的需求。在示例中,问题存储在地图中,但很容易将其更改为ArrayList或数组。
#3
0
You can use the DOM parser, here is a link to the DocumentBuilder class.
您可以使用DOM解析器,这里是DocumentBuilder类的链接。
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
:
从DocumentBuilder中使用解析方法并获取Document后,您可以使用这样的函数将项目作为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
.
在您的情况下,您将通过解析XML传递您创建的Document对象,然后将question作为您的nodeName。
Once you have your NodeList, you can iterate through it using a for loop and the .item()
method.
获得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.
}
}
#1
4
public class CustomHandler extends DefaultHandler {
公共类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;
};
}
}
#2
0
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.
这个答案似乎很容易适应您的需求。在示例中,问题存储在地图中,但很容易将其更改为ArrayList或数组。
#3
0
You can use the DOM parser, here is a link to the DocumentBuilder class.
您可以使用DOM解析器,这里是DocumentBuilder类的链接。
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
:
从DocumentBuilder中使用解析方法并获取Document后,您可以使用这样的函数将项目作为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
.
在您的情况下,您将通过解析XML传递您创建的Document对象,然后将question作为您的nodeName。
Once you have your NodeList, you can iterate through it using a for loop and the .item()
method.
获得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.
}
}