要解析含有XML标签的字符串,可以使用Java中自带的解析API——DOM(文档对象模型),或者第三方的解析库——JDOM、DOM4J等。下面以DOM为例,提供一份Java全面解析string类型的XML字符串的攻略。
1. 准备字符串
假设有一个字符串xmlString,它包含以下XML标签:
<person>
<name>Tom</name>
<age>18</age>
</person>
2. 解析字符串
首先,需要构建DocumentBuilderFactory对象以及DocumentBuilder对象。代码如下:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
接着,需要通过builder对象解析字符串并生成Document对象。经过以下代码的处理,doc对象将代表整个XML文档。
InputSource is = new InputSource(new StringReader(xmlString));
Document doc = builder.parse(is);
3. 获取节点
使用Document对象的getElementsByTagName方法,可以获取任意标签的节点列表。下面提供两个示例。
例1:获取person节点下的所有子节点
NodeList nodeList = doc.getElementsByTagName("person").item(0).getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(node.getNodeName() + ": " + node.getTextContent());
}
}
输出结果为:
name: Tom
age: 18
例2:获取所有节点
NodeList nodeList = doc.getElementsByTagName("*");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(node.getNodeName() + ": " + node.getTextContent());
}
}
输出结果为:
person: Tom18
name: Tom
age: 18
4. 完整示例
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.xml.sax.InputSource;
public class ParseXML {
public static void main(String[] args) throws Exception {
String xmlString = "<person><name>Tom</name><age>18</age></person>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xmlString));
Document doc = builder.parse(is);
NodeList nodeList = doc.getElementsByTagName("person").item(0).getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
System.out.println(node.getNodeName() + ": " + node.getTextContent());
}
}
}
}
输出结果为:
name: Tom
age: 18
总结
解析含有XML标签的字符串可以使用Java中的DOM API,先通过DocumentBuilderFactory和DocumentBuilder对象解析字符串,再通过Document对象获取节点列表,最后通过Node对象获取节点文本。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java全面解析string类型的xml字符串 - Python技术站