Java 从/分隔的字符串创建XML

Java 从/分隔的字符串创建XML,java,list,compare,Java,List,Compare,下面是一个映射元素 我需要从中创建一个xslt { /output1/output1/output1/output13=/input12/bunny, /output1/output1/output1/output14=/input12/no, /output1/output1/output13/output12=/input12/ok, /output1/output1/output13/output16=/input12/honey

下面是一个映射元素 我需要从中创建一个xslt

  {    /output1/output1/output1/output13=/input12/bunny,  
    /output1/output1/output1/output14=/input12/no,    
    /output1/output1/output13/output12=/input12/ok,   
    /output1/output1/output13/output16=/input12/honey

     }
如何将关键元素的每个元素与下一个关键元素的每个元素进行比较

mig封装

import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;

import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
  import org.w3c.dom.Document;
  import org.w3c.dom.Element;
  import org.w3c.dom.Attr;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
公共类创建XSLT{

public static final String xmlFilePath = "D:/xmlfile.xml";

public void  createXSLT(ArrayList<String> SourceValues,ArrayList<String> SourceTypes,ArrayList<String> TargetValues,ArrayList<String> TargetTypes,ArrayList<String> Transform)
{


    try {

        Map<String, String> yourMap = new HashMap<String, String>();

        for(int x=0;x<TargetValues.size();x++)
        {
            yourMap.put(TargetValues.get(x),SourceValues.get(x));
        }

        Map<String, String> sortedMap = new TreeMap<String, String>(yourMap);

        System.out.println(sortedMap);

        Set<Entry<String, String>> entires =sortedMap.entrySet();
        Set<String> keyset = sortedMap.keySet();
        System.out.println(keyset);


    DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();

    DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();

    Document document = documentBuilder.newDocument();

    Element root = document.createElement("xsl:stylesheet");

    document.appendChild(root);

    Element root1 = document.createElement("xsl:template");
    root.appendChild(root1);

    Attr attr = document.createAttribute("match");
    attr.setValue("/");
    root1.setAttributeNode(attr);




    Element empDiffNxt = null; 
    Element  empDiff = null; 


int nodeLength = keyset.size(); 
System.out.println("TARGET sIZE: " + nodeLength);



    for(String key : keyset)
    {

        ArrayList<String> check = new ArrayList<String>();

        check.add(key);
        String[] Tg = key.split("/");



     for (int m=1; m< Tg.length; m++)

     {




         if( m == 1 )
         {
          empDiffNxt = document.createElement(Tg[m]);
         root1.appendChild(empDiffNxt);
         }
         else 
         {
              empDiff = document.createElement(Tg[m]);
              empDiffNxt.appendChild(empDiff);
              empDiffNxt= empDiff;
         }




     }

     Element emp1 = document.createElement("xsl:value-of");

        empDiffNxt.appendChild(emp1);

        Attr attr1 = document.createAttribute("select");


        attr1.setValue(sortedMap.get(key));

        emp1.setAttributeNode(attr1);



}






    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource domSource = new DOMSource(document);
    StreamResult streamResult = new StreamResult(new File(xmlFilePath));



    transformer.transform(domSource, streamResult);

    System.out.println("Done creating XML File");


    }
    catch (ParserConfigurationException pce) {
        pce.printStackTrace();
    } catch (TransformerException tfe) {
        tfe.printStackTrace();
    }
}

在列表中,输入源值

surce值和目标值具有链接..表示源的第一个值与目标的第一个值连接..源的第二个值与目标的第二个值连接

  <?xml version="1.0" encoding="UTF-8" standalone="no"?><xsl:stylesheet><xsl:template match="/"><output1><output1><output1><output13><xsl:value-of select="/input12/bunny"/></output13></output1></output1></output1><output1><output1><output1><output14><xsl:value-of select="/input12/no"/></output14></output1></output1></output1><output1><output1><output13><output12><xsl:value-of select="/input12/ok"/><xsl:value-of select="/input12/honey"/></output12></output13></output1></output1></xsl:template></xsl:stylesheet>
这是正在生成的

但我想要的是:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet>
<xsl:template match="/">
<output1>
   <output1>
     <output1>
      <output13>
        <xsl:value-of select="/input12/bunny"/>
      </output13>
      <output14>
        <xsl:value-of select="/input12/no"/>
      </output14>
     </output1>

     <output13>
       <output12>
         <xsl:value-of select="/input12/ok"/>
       </output12>
       <output16>
         <xsl:value-of select="/input12/honey"/>
       </output16>
     </output13>

   </output1>
 </output1>

似乎您的键和值都是字符串。比较的确切含义是什么?您想按键排序,还是要在映射上执行什么操作?我已经对映射进行了排序。现在我想创建xml标记。由于第一个output1相同,将生成一个output1标记,接下来在这个内部,将生成另一个output1,因为所有输出都相同,然后生成一个output1ut1和output13..在输出1..内部,它将是output13和output14@proton我认为,如果您为给定字符串添加结果XML的外观,这将有助于我们所有人。
  <?xml version="1.0" encoding="UTF-8" standalone="no"?><xsl:stylesheet><xsl:template match="/"><output1><output1><output1><output13><xsl:value-of select="/input12/bunny"/></output13></output1></output1></output1><output1><output1><output1><output14><xsl:value-of select="/input12/no"/></output14></output1></output1></output1><output1><output1><output13><output12><xsl:value-of select="/input12/ok"/><xsl:value-of select="/input12/honey"/></output12></output13></output1></output1></xsl:template></xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet>
<xsl:template match="/">
<output1>
   <output1>
     <output1>
      <output13>
        <xsl:value-of select="/input12/bunny"/>
      </output13>
      <output14>
        <xsl:value-of select="/input12/no"/>
      </output14>
     </output1>

     <output13>
       <output12>
         <xsl:value-of select="/input12/ok"/>
       </output12>
       <output16>
         <xsl:value-of select="/input12/honey"/>
       </output16>
     </output13>

   </output1>
 </output1>