解析xml字符串 java
时间: 2023-08-01 18:06:24 浏览: 98
在Java中,可以使用Java XML解析器来解析XML字符串。Java中内置了两种XML解析器:DOM和SAX。
1. 使用DOM解析器解析XML字符串:
DOM解析器将XML文件解析成一个树形结构,可以通过遍历树形结构来获取XML文件中的节点和属性信息。
示例代码:
```
// 将XML字符串转换为Document对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource inputSource = new InputSource(new StringReader(xmlString));
Document document = builder.parse(inputSource);
// 遍历树形结构获取节点信息
Element root = document.getDocumentElement();
NodeList nodeList = root.getElementsByTagName("node");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
String nodeName = node.getNodeName();
String nodeValue = node.getTextContent();
NamedNodeMap attributes = node.getAttributes();
// ...
}
```
2. 使用SAX解析器解析XML字符串:
SAX解析器是一种基于事件驱动的解析器,它不需要将XML文件全部读入内存,可以按照顺序逐个读取节点和属性信息。
示例代码:
```
// 创建SAX解析器
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
// 自定义Handler处理XML文件中的节点和属性信息
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
// 处理节点信息
}
public void endElement(String uri, String localName, String qName) throws SAXException {
// 处理节点结束标记
}
public void characters(char[] ch, int start, int length) throws SAXException {
// 处理节点文本
}
};
// 解析XML字符串
InputSource inputSource = new InputSource(new StringReader(xmlString));
saxParser.parse(inputSource, handler);
```
阅读全文