杰瑞科技汇

Java字符串如何转XML?

Java 字符串转换成 XML

在 Java 中,将字符串转换为 XML 可以通过多种方式实现,以下是几种常见的方法:

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

使用字符串拼接构建 XML

public class StringToXml {
    public static void main(String[] args) {
        String xmlString = "<root>"
                + "<name>John Doe</name>"
                + "<age>30</age>"
                + "<city>New York</city>"
                + "</root>";
        System.out.println(xmlString);
    }
}

使用 StringBuilder 构建大型 XML

public class StringBuilderToXml {
    public static void main(String[] args) {
        StringBuilder xmlBuilder = new StringBuilder();
        xmlBuilder.append("<root>");
        xmlBuilder.append("<name>").append("John Doe").append("</name>");
        xmlBuilder.append("<age>").append(30).append("</age>");
        xmlBuilder.append("<city>").append("New York").append("</city>");
        xmlBuilder.append("</root>");
        String xmlString = xmlBuilder.toString();
        System.out.println(xmlString);
    }
}

使用 DOM 解析器解析 XML 字符串

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class DomParserExample {
    public static void main(String[] args) throws Exception {
        // 创建 DocumentBuilderFactory
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        // 创建新文档
        Document doc = builder.newDocument();
        // 创建根元素
        Element root = doc.createElement("root");
        doc.appendChild(root);
        // 添加子元素
        Element name = doc.createElement("name");
        name.setTextContent("John Doe");
        root.appendChild(name);
        Element age = doc.createElement("age");
        age.setTextContent("30");
        root.appendChild(age);
        Element city = doc.createElement("city");
        city.setTextContent("New York");
        root.appendChild(city);
        // 将 DOM 转换为字符串
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new java.io.StringWriter());
        transformer.transform(source, result);
        String xmlString = result.getWriter().toString();
        System.out.println(xmlString);
    }
}

使用 JAXB (Java Architecture for XML Binding)

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
class Person {
    private String name;
    private int age;
    private String city;
    @XmlElement
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    @XmlElement
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
    @XmlElement
    public String getCity() { return city; }
    public void setCity(String city) { this.city = city; }
}
public class JaxbExample {
    public static void main(String[] args) throws Exception {
        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);
        person.setCity("New York");
        JAXBContext context = JAXBContext.newInstance(Person.class);
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(person, System.out);
    }
}

使用第三方库 (如 Jackson 或 Gson)

使用 Jackson

import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.util.HashMap;
import java.util.Map;
public class JacksonXmlExample {
    public static void main(String[] args) throws Exception {
        XmlMapper xmlMapper = new XmlMapper();
        Map<String, Object> map = new HashMap<>();
        map.put("name", "John Doe");
        map.put("age", 30);
        map.put("city", "New York");
        String xmlString = xmlMapper.writeValueAsString(map);
        System.out.println(xmlString);
    }
}

使用 Gson

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class GsonXmlExample {
    public static void main(String[] args) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("name", "John Doe");
        jsonObject.addProperty("age", 30);
        jsonObject.addProperty("city", "New York");
        String jsonString = gson.toJson(jsonObject);
        System.out.println(jsonString);
        // 注意:Gson 本身不直接支持 XML,需要额外库如 gson-xml
    }
}

注意事项

  1. XML 转义:确保特殊字符(如 <, >, &, , )被正确转义
  2. 命名空间:如果需要 XML 命名空间,需要在创建元素时指定
  3. 编码:确保使用正确的字符编码(通常是 UTF-8)
  4. 验证:考虑验证生成的 XML 是否符合预期格式

选择哪种方法取决于你的具体需求,例如是否需要动态构建 XML、是否需要绑定到 Java 对象、性能要求等。

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