以下是几种常见的将文本转换为 XML 文档的方法,你可以根据实际文本的具体情况和使用场景来进行选择:
xml.etree.ElementTree
模块)import xml.etree.ElementTree as ET
# 模拟文本数据,这里可以替换为实际读取的文本内容
text_data = [
{"姓名": "张三", "年龄": 25, "职业": "工程师"},
{"姓名": "李四", "年龄": 30, "职业": "教师"}
]
root = ET.Element("人员信息")
for person in text_data:
person_elem = ET.SubElement(root, "人员")
name_elem = ET.SubElement(person_elem, "姓名")
name_elem.text = str(person["姓名"])
age_elem = ET.SubElement(person_elem, "年龄")
age_elem.text = str(person["年龄"])
job_elem = ET.SubElement(person_elem, "职业")
job_elem.text = str(person["职业"])
tree = ET.ElementTree(root)
tree.write("output.xml", encoding="utf-8", xml_declaration=True)
<人员信息>
,然后遍历文本数据中的每个人物信息字典,为每个人创建对应的 <人员>
子元素以及包含姓名、年龄、职业等信息的子元素,并将相应文本内容填充进去,最后将构建好的 XML 结构写入到名为 output.xml
的文件中。javax.xml.parsers.DocumentBuilder
等相关类)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;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TextToXmlExample {
public static void main(String[] args) {
// 模拟文本数据,这里可以替换为实际读取的文本内容
List<Map<String, String>> textData = new ArrayList<>();
Map<String, String> person1 = new HashMap<>();
person1.put("姓名", "张三");
person1.put("年龄", "25");
person1.put("职业", "工程师");
textData.add(person1);
Map<String, String> person2 = new HashMap<>();
person2.put("姓名", "李四");
person2.put("年龄", "30");
person2.put("职业", "教师");
textData.add(person2);
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
Element rootElement = doc.createElement("人员信息");
doc.appendChild(rootElement);
for (Map<String, String> person : textData) {
Element personElement = doc.createElement("人员");
rootElement.appendChild(personElement);
Element nameElement = doc.createElement("姓名");
nameElement.setTextContent(person.get("姓名"));
personElement.appendChild(nameElement);
Element ageElement = doc.createElement("年龄");
ageElement.setTextContent(person.get("年龄"));
personElement.appendChild(ageElement);
Element jobElement = doc.createElement("职业");
jobElement.setTextContent(person.get("职业"));
personElement.appendChild(jobElement);
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult("output.xml");
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Document
对象,构建根元素 <人员信息>
,接着针对每条文本数据构建相应的 <人员>
等子元素并设置文本内容,最后通过 Transformer
将构建好的 DOM 结构转换为 XML 文件输出。张三,25,工程师
李四,30,教师
<人员信息>
。<人员>
子元素,并在其中再创建 <姓名>
、<年龄>
、<职业>
等子元素,将文本对应的数据分别填入这些元素标签内,如下所示:<?xml version="1.0" encoding="UTF-8"?>
<人员信息>
<人员>
<姓名>张三</姓名>
<年龄>25</年龄>
<职业>工程师</职业>
</人员>
<人员>
<姓名>李四</姓名>
<年龄>30</姓名>
<职业>教师</职业>
</人员>
</人员信息>
需要注意的是,具体转换时要根据文本原本的结构、逻辑以及想要生成的 XML 文档的规范要求等因素,灵活选择合适的转换方法,并且确保转换后的 XML 文档符合 XML 语法规则和相关的应用场景需求。
领取专属 10元无门槛券
手把手带您无忧上云