java - 将 Map 转换为 XML 而不使用 JAXB

标签 java xml dictionary

当 Map 中的值字段中可以有另一个 Map 时,如何将 Map 转换为 XML。有使用第三方库的方法,但如何递归地执行此操作?

e.g. My map is :-

 {
     Type=SPEND, 
     Contact=
     {
       Name=ABC BANK
     }, 

     LineItems=
     {
       LineItem=
       { 
          Description=BANK ACCOUNT FEE, 
           AccouceCode=404, 
           UnitAmount=20.00
       }
     }
     BankAccount=
     {
       Code=BANK-ABC
     },
    }

转换后的XML格式为:-

<BankTransaction>
      <Type>SPEND</Type>
      <Contact>
        <Name>ABC Bank</Name>
      </Contact>
      <LineItems>
        <LineItem>
          <Description>Yearly Bank Account Fee</Description>
          <UnitAmount>20.00</UnitAmount>
          <AccountCode>404</AccountCode>
        </LineItem>
      </LineItems>
      <BankAccount>
        <Code>BANK-ABC</Code>
      </BankAccount>
</BankTransaction>

我已经为此编写了代码,但它没有以正确的格式转换。任何帮助将不胜感激。

public static String MaptoXML(Map<String,Object> params, String root)
    {
        StringBuilder sb = new StringBuilder();
        sb.append("<");
        sb.append(root);
        sb.append(">");

        Iterator<String> it = params.keySet().iterator();
        while(it.hasNext())
        {
            String key = (String)it.next();
            Object obj = params.get(key);

            if(obj instanceof Map)
            {
                Map<String, Object> rec = (Map)obj;
                String s ;
                s = MaptoXML(rec,key);
                sb.append(s);
            }

            sb.append("<");
            sb.append(key);
            sb.append(">");

            sb.append(params.get(key));

            sb.append("</");
            sb.append(key);
            sb.append(">"); 
        }
        sb.append("</");
        sb.append(root);
        sb.append(">");

        return sb.toString();

    }

最佳答案

你犯了一个小错误。这是正确的代码

public static String MaptoXML(Map<String,Object> params, String root)
    {
        StringBuilder sb = new StringBuilder();
        sb.append("<");
        sb.append(root);
        sb.append(">");

        Iterator<String> it = params.keySet().iterator();
        while(it.hasNext())
        {
            String key = it.next();
            Object obj = params.get(key);

            if(obj instanceof Map)
            {
                Map<String, Object> rec = (Map)obj;
                String s ;
                s = MaptoXML(rec,key);
                sb.append(s);
            }
            else
            {
                sb.append("<");
                sb.append(key);
                sb.append(">");

                sb.append(params.get(key));

                sb.append("</");
                sb.append(key);
                sb.append(">"); 
            }
        }
        sb.append("</");
        sb.append(root);
        sb.append(">");

        return sb.toString();   
    }

它也适用于嵌套 map 。

关于java - 将 Map 转换为 XML 而不使用 JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609231/

相关文章:

java - 使用 ArrayList 访问特定对象 Java

java - 如何编写更短的排序和分组算法?

java - 如何使用 jython 迭代 org.w3c.dom.NodeList?

python - dict.fromkeys 是否会一遍又一遍地分配相同的引用?

Python 3 - 列表到字典。按单词排序

java - Eclipse 显示错误,而 ndk_build 成功

sql - 在应用 block 中使用需要表参数的标量函数

java - XPath 查询返回重复节点

c# - 从 XmlElement 创建 XPathDocument

java - 更新 map 中的值