在 Java 中,可以使用 Java 内置的 XML 解析器来解析 String 类型的 XML 内容。以下是一些常见的 Java XML 解析库:

  1. DOM 解析器:使用 DOM 解析器可以将 XML 文档解析为一个树形结构,可以方便地遍历和修改 XML 文档。下面是一个使用 DOM 解析器解析 String 类型的 XML 内容的示例:
String xmlContent = '<root><name>John</name><age>25</age></root>';
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xmlContent));
Document doc = builder.parse(is);

NodeList nodeList = doc.getElementsByTagName('name');
String name = nodeList.item(0).getTextContent();

nodeList = doc.getElementsByTagName('age');
String age = nodeList.item(0).getTextContent();

System.out.println('Name: ' + name);
System.out.println('Age: ' + age);
  1. SAX 解析器:SAX 解析器是基于事件驱动的解析器,可以在解析 XML 文档时触发事件,并通过事件处理程序来处理 XML 文档。下面是一个使用 SAX 解析器解析 String 类型的 XML 内容的示例:
String xmlContent = '<root><name>John</name><age>25</age></root>';
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();

DefaultHandler handler = new DefaultHandler() {
    boolean bName = false;
    boolean bAge = false;

    public void startElement(String uri, String localName,String qName,
                Attributes attributes) throws SAXException {
        if (qName.equalsIgnoreCase('name')) {
            bName = true;
        }
        if (qName.equalsIgnoreCase('age')) {
            bAge = true;
        }
    }

    public void characters(char ch[], int start, int length) throws SAXException {
        if (bName) {
            System.out.println('Name: ' + new String(ch, start, length));
            bName = false;
        }
        if (bAge) {
            System.out.println('Age: ' + new String(ch, start, length));
            bAge = false;
        }
    }
};

saxParser.parse(new InputSource(new StringReader(xmlContent)), handler);
  1. JAXB 解析器:JAXB 是 Java 架构与 XML 绑定的缩写,可以将 XML 文档映射为 Java 对象,方便地进行处理。下面是一个使用 JAXB 解析器解析 String 类型的 XML 内容的示例:
String xmlContent = '<root><name>John</name><age>25</age></root>';
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

Root root = (Root) unmarshaller.unmarshal(new StringReader(xmlContent));
System.out.println('Name: ' + root.getName());
System.out.println('Age: ' + root.getAge());

以上示例中,Root 类是一个 Java 类,使用了 JAXB 注解来映射 XML 元素。例如:

@XmlRootElement
public class Root {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    @XmlElement
    public void setAge(int age) {
        this.age = age;
    }
}

选择哪种解析器取决于您的具体需求。如果需要遍历和修改 XML 文档,则可以选择 DOM 解析器;如果需要在解析 XML 文档时触发事件,则可以选择 SAX 解析器;如果需要将 XML 文档映射为 Java 对象,则可以选择 JAXB 解析器。

Java 解析 String 类型 XML 内容:DOM、SAX 和 JAXB 示例

原文地址: https://www.cveoy.top/t/topic/nnlZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录