1.Dom解析xml
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
/**
* @ClassName Xml
* @Description :使用DOM进行解析XML
*/
public class Xml {
public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {
//DocumentBuilder类的构造函数是受保护的,不能直接实例化
//使用静态工厂方法来进行创建建符合标准的DocumentBuilder实例
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("E:\\code\\Java\\01_java基础\\src\\test.xml"));
// 获取XML文档的根元素
Element rootElement = document.getDocumentElement();
// 打印根元素的标签名
System.out.println("Root element: " + rootElement.getNodeName());
NodeList childNodes = rootElement.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
//获取元素,此包含了文本元素以及节点元素
Node node = childNodes.item(i);
System.out.println(node);
if (node.getNodeType() ==Node.ELEMENT_NODE){
Element element = (Element) node;
// 打印元素节点的标签名和文本内容
System.out.println("下面开始了-----------");
System.out.println("Element"+element.getNodeName());
System.out.println("content"+element.getTextContent());
}
}
}
}
2.SAX解析
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
public class Main {
public static void main(String[] args) {
try {
// 创建 SAXParserFactory 实例
SAXParserFactory factory = SAXParserFactory.newInstance();
// 创建 SAXParser 实例
SAXParser parser = factory.newSAXParser();
// 创建 MyContentHandler 实例
MyContentHandler contentHandler = new MyContentHandler();
// 解析 XML 文档
String xml = "<root><element attr=\"value\">Text</element></root>";
parser.parse(new InputSource(new StringReader(xml)), contentHandler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MyContentHandler extends DefaultHandler {
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
// 处理元素开始标签事件
System.out.println("Start Element: " + qName);
// 如果有属性,处理属性
if (attributes.getLength() > 0) {
System.out.println("Attributes:");
for (int i = 0; i < attributes.getLength(); i++) {
System.out.println(attributes.getQName(i) + "=" + attributes.getValue(i));
}
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// 处理元素结束标签事件
System.out.println("End Element: " + qName);
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// 处理文本节点事件
String text = new String(ch, start, length).trim();
if (!text.isEmpty()) {
System.out.println("Text: " + text);
}
}
}
MyContentHandler类继承自DefaultHandler,是一个自定义的内容处理器。在该类中重写了startElement()、endElement()和characters()方法,以处理XML解析的不同事件。文章来源地址https://www.toymoban.com/news/detail-534553.html
文章来源:https://www.toymoban.com/news/detail-534553.html
到了这里,关于java解析xml文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!