读取xml字符串或者文件
// 字符串格式的数据转换成document对象
Document document = DocumentHelper.parseText("xml");
// 读取xml文件
SAXReader reader = new SAXReader();
Document document = reader.read("xml路径");
操作xml的element节点
// 获取根元素
Element root = document.getRootElement();
public static void xmlElementParseIterator(Element element) {
// 根元素迭代器
Iterator iterator = element.elementIterator();
while (iterator.hasNext()) {
Element ele = (Element) iterator.next();
String nodeName = ele.getName();
if (nodeName.equals("file")) {
xmlElementParseIterator(ele);
}
if (nodeName.equals("unit")) {
xmlElementParseIterator(ele);
}
if (nodeName.equals("originalData")) {
xmlElementParseIterator(ele);
}
if (nodeName.equals("segment") || nodeName.equals("ignorable")) {
xmlElementParseIterator(ele);
}
// todo 文字解析 处理ph 转换样式
if (nodeName.equals("source")) {
System.out.println("处理前:" + ele.asXML());
String content = getElementAllContent(ele);
List<List<String>> sourceContentList = getSourceContentList(content);
// 获取样式【最后改为中转】
Element segment = ele.getParent();
String segmentId = segment.attribute("id").getValue();
Element unit = segment.getParent();
String unitId = unit.attribute("id").getValue();
Element file = unit.getParent();
String fileId = file.attribute("id").getValue();
genStyleContentFromUnit(unit, sourceContentList);
System.out.println(String.format("处理后,file=%s,unit=%s,segment=%s,文本内容:%s", fileId, unitId, segmentId, sourceContentList));
return;
}
if (nodeName.equals("data")) {
return;
}
if (nodeName.equals("ph")) {
return;
}
}
}
存储修改后的xml
OutputFormat format = OutputFormat.createCompactFormat();// 创建文件输出的时候,保留原有格式
OutputFormat format = OutputFormat.createPrettyPrint();// 创建文件输出的时候,自动缩进的格式
format.setEncoding("UTF-8");//设置编码
XMLWriter writer = new XMLWriter(new FileWriter("xxx.xml"), format);
writer.write(document);
writer.close();