关于#XML#的问题,如何解决?

我每天都需要编辑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"));
    }
  }
}

img

img

img

img

详细描述下输入从哪儿取,格式是怎么样的,输出到哪里吧

如果是pc端 自己写一个这样的程序也是很简单的

思路:
1:首先生成自己的xml样式为String

img


2:将String转为xml文件

 一、使用最原始的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