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

(图片来源网络,侵删)
使用字符串拼接构建 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
}
}
注意事项
- XML 转义:确保特殊字符(如
<,>,&, , )被正确转义 - 命名空间:如果需要 XML 命名空间,需要在创建元素时指定
- 编码:确保使用正确的字符编码(通常是 UTF-8)
- 验证:考虑验证生成的 XML 是否符合预期格式
选择哪种方法取决于你的具体需求,例如是否需要动态构建 XML、是否需要绑定到 Java 对象、性能要求等。

(图片来源网络,侵删)
