杰瑞科技汇

Java字符串如何转换为XML格式?

Java String 转 XML 的方法

在 Java 中,将字符串转换为 XML 有多种方法,具体取决于你的需求和场景,以下是几种常见的实现方式:

Java字符串如何转换为XML格式?-图1
(图片来源网络,侵删)

使用 DOM 解析器

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class StringToXml {
    public static void main(String[] args) {
        String xmlString = "<root><name>John</name><age>30</age></root>";
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new InputSource(new StringReader(xmlString)));
            // 现在可以使用 document 对象操作 XML
            System.out.println("XML 解析成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用 StringReader 和 InputSource

import org.xml.sax.InputSource;
import java.io.StringReader;
public class StringToXml {
    public static void main(String[] args) {
        String xmlString = "<root><name>John</name><age>30</age></root>";
        try {
            InputSource source = new InputSource(new StringReader(xmlString));
            // 可以将 source 传递给 SAX 或 DOM 解析器
            System.out.println("InputSource 创建成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用 JAXB (Java Architecture for XML Binding)

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
public class StringToXml {
    public static void main(String[] args) {
        String xmlString = "<person><name>John</name><age>30</age></person>";
        try {
            JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
            Person person = (Person) unmarshaller.unmarshal(new StringReader(xmlString));
            System.out.println("姓名: " + person.getName());
            System.out.println("年龄: " + person.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
// 对应的 Java 类
class Person {
    private String name;
    private int age;
    // getters and setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

使用 DOM4J 库

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class StringToXml {
    public static void main(String[] args) {
        String xmlString = "<root><name>John</name><age>30</age></root>";
        try {
            Document document = DocumentHelper.parseText(xmlString);
            Element root = document.getRootElement();
            System.out.println("根元素名: " + root.getName());
            System.out.println("姓名: " + root.element("name").getText());
            System.out.println("年龄: " + root.element("age").getText());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用 StAX (Streaming API for XML)

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import java.io.StringReader;
public class StringToXml {
    public static void main(String[] args) {
        String xmlString = "<root><name>John</name><age>30</age></root>";
        try {
            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLStreamReader reader = factory.createXMLStreamReader(new StringReader(xmlString));
            while (reader.hasNext()) {
                int event = reader.next();
                switch (event) {
                    case XMLStreamConstants.START_ELEMENT:
                        System.out.println("开始元素: " + reader.getLocalName());
                        break;
                    case XMLStreamConstants.CHARACTERS:
                        System.out.println("文本内容: " + reader.getText());
                        break;
                    case XMLStreamConstants.END_ELEMENT:
                        System.out.println("结束元素: " + reader.getLocalName());
                        break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项

  1. XML 格式验证:确保字符串是格式良好的 XML,否则会抛出异常
  2. 字符编码:处理特殊字符时要注意编码问题
  3. 性能考虑
    • DOM 适合小型文档,内存占用较大
    • SAX 和 StAX 适合大型文档,流式处理
    • DOM4J 性能较好,是第三方库
  4. 异常处理:XML 解析可能会抛出多种异常,需要妥善处理

选择哪种方法取决于你的具体需求,如文档大小、性能要求、是否需要绑定到 Java 对象等。

Java字符串如何转换为XML格式?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇