我必须解析一个包含XML标签的String,如下面的硬编码,这样我就可以分别得到所有标签的值。我在这里使用
NodeList node = doc.getElementsByTagName("event");
返回值为" ajain1AnkitJain24-04-199223:09.08"
我想检索每个标记的值,并将其分别存储在不同的变量中。
例如,在这种情况下,我希望将值存储为:
String UID = ajain1
String FirstName = Ankit
String LastName = Jain
Date date = "24-04-1992 23:09.08"
以下是我正在处理的示例代码。
package test;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class Demo {
public static void main(String[] args) {
String xmldata = "<event><class></class><data><UID><![CDATA[ajain1]]></UID><FIRSTNAME><![CDATA[Ankit]]></FIRSTNAME><LASTNAME><![CDATA[Jain]]></LASTNAME><DATE><![CDATA[24-04-1992]]></DATE><TIME><![CDATA[23:09.08]]></TIME></data></event>";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmldata));
try {
Document doc = db.parse(is);
//String message = doc.getDocumentElement().getTextContent();
//System.out.println(message);
NodeList node = doc.getElementsByTagName("event");
} catch (SAXException e) {
// handle SAXException
} catch (IOException e) {
// handle IOException
}
} catch (ParserConfigurationException e1) {
// handle ParserConfigurationException
}
// TODO Auto-generated method stub
}
}
如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
NodeList
已经是包含所有请求节点的列表,但我不得不承认,我发现它的实现非常值得怀疑。它基本上是一个包含所请求节点作为子节点的节点。它的实现与其他列表实现没有任何共同之处 - 它甚至没有实现List接口。我不知道如何处理[!CDATA]
,但要遍历所有event
代码,您必须执行以下操作:
NodeList eventList = doc.getElementsByTagName("event");
for(int i = 0; i < eventList.getLength(); i++) {
Element eventElement = (Element) eventList.item(i);
// do some stuff with it
}
通过此元素,您还可以使用getElementsByTagName
获取有关名字等所需的信息。是的,它可能会以许多嵌套循环结束......