当 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/