我每天都需要编辑XML文档,需要把我们订单的客户信息复制粘贴到以下的固定格式,请问有没有XML编辑器,可以根据我们订单的客户的信息,自动完成这个任务,需要自动替换的内容有,TransactionDate,EmailAddress,UserName,ExternalId,Name,Price,谢谢各位!
<Interaction>
<TransactionDate>2022-08-22T10:43:12.000TransactionDate>
<EmailAddress>525d@outlook.comEmailAddress>
<UserName>SamUserName>
<Locale>en_USLocale>
<DeploymentZone>main_siteDeploymentZone>
<Products>
<Product>
<ExternalId>4545157ExternalId>
<Name>Portable Tabletop Propane Gas GrillName>
<Price>118.19Price>
Product>
Products>
Interaction>
这个很简单,我粗略写了个例子。
每天把需要转换的文件,放在一个文件夹下,直接批量处理。同时也打印到控制台中。
如果觉得我的方法可以,我可以将源码发给你。
public class FileTool {
private static String mode =
"<Interaction>\n"
+ " <TransactionDate>#1#</TransactionDate>\n"
+ " <EmailAddress>#2#</EmailAddress>\n"
+ " <UserName>#3#</UserName>\n"
+ " <Locale>en_US</Locale>\n"
+ " <DeploymentZone>main_site</DeploymentZone>\n"
+ " <Products>\n"
+ " <Product>\n"
+ " <ExternalId>#4#</ExternalId>\n"
+ " <Name>#5#</Name>\n"
+ " <Price>#6#</Price>\n"
+ " </Product>\n"
+ " </Products>\n"
+ "</Interaction>";
public static void main(String[] args) {
List<File> files = FileUtil.loopFiles("E:\\Users\\LIN\\Desktop\\file\\Excel\\");
if (CollUtil.isEmpty(files)) {
return;
}
for (File file : files) {
ExcelReader reader = ExcelUtil.getReader(file);
List<Map<String, Object>> readAll = reader.readAll();
String testStr = mode;
testStr =
testStr
.replaceAll("#1#", readAll.get(0).get("TransactionDate").toString())
.replaceAll("#2#", readAll.get(0).get("EmailAddress").toString())
.replaceAll("#3#", readAll.get(0).get("UserName").toString())
.replaceAll("#4#", readAll.get(0).get("ExternalId").toString())
.replaceAll("#5#", readAll.get(0).get("Name").toString())
.replaceAll("#6#", readAll.get(0).get("Price").toString());
System.out.println(testStr);
System.out.println("==========================");
File newFlie =
FileUtil.appendUtf8String(
testStr, file.getPath().replaceAll("Excel", "XML").replaceAll("xlsx", "xml"));
}
}
}
详细描述下输入从哪儿取,格式是怎么样的,输出到哪里吧
如果是pc端 自己写一个这样的程序也是很简单的
思路:
1:首先生成自己的xml样式为String
一、使用最原始的javax.xml.parsers,标准的jdk api
// 字符串转XML
String xmlStr = "......";
StringReader sr = new StringReader(xmlStr);
InputSource is = new InputSource(sr);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(is);
//XML转字符串
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty("encoding","GB23121");//解决中文问题,试过用GBK不行
ByteArrayOutputStream bos = new ByteArrayOutputStream();
t.transform(new DOMSource(doc), new StreamResult(bos));
String xmlStr = bos.toString();
这里的XML DOCUMENT为org.w3c.dom.Document
二、使用dom4j后程式变得更简单
// 字符串转XML
String xmlStr = "......";
Document document = DocumentHelper.parseText(xmlStr);
// XML转字符串
Document document = ...;
String text = document.asXML();
这里的XML DOCUMENT为org.dom4j.Document
三、使用JDOM
JDOM的处理方式和第一种方法处理很类似
//字符串转XML
String xmlStr = ".....";
StringReader sr = new StringReader(xmlStr);
InputSource is = new InputSource(sr);
Document doc = (new SAXBuilder()).build(is);
//XML转字符串
Format format = Format.getPrettyFormat();
format.setEncoding("gb2312");//配置xml文档的字符为gb2312,解决中文问题
XMLOutputter xmlout = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(doc,bo);
String xmlStr = bo.toString();
这里的XML DOCUMENT为org.jdom.Document
四、JAVASCRIPT中的处理
//字符串转XML
var xmlStr = ".....";
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(xmlStr);
//能够处理这个xmlDoc了
var name = xmlDoc.selectSingleNode("/person/name");
alert(name.text);
//XML转字符串
var xmlDoc = ......;
var xmlStr = xmlDoc.xml
这里的XML DOCUMENT为javascript版的XMLDOM