0

我得到一个值流作为 CSV ,基于某些条件,我需要生成一个 XML,其中仅包含来自 CSV 的一组值。例如。

Input : a:value1, b:value2, c:value3, d:value4, e:value5.
if (condition1) 
XML O/P = <Request><ValueOfA>value1</ValueOfA><ValueOfE>value5</ValueOfE></Request>
else if (condition2)
XML O/P = <Request><ValueOfB>value2</ValueOfB><ValueOfD>value4</ValueOfD></Request>

我想以给定模板相应地生成输出 XML 的方式将该过程外部化。字符串操作是实现这一点的最简单方法,但如果输入中出现某些特殊字符等,我不想弄乱 XML。请提出建议。

4

3 回答 3

0

也许您可以从模板引擎中受益,例如Apache Velocity

于 2012-04-19T12:57:20.010 回答
0

我建议创建一个 xsd 并使用JAXB创建可用于生成 XML 的 Java 绑定类。

于 2012-04-19T12:58:41.220 回答
0

我推荐我自己的模板引擎(JATL http://code.google.com/p/jatl/)虽然它面向 (X)HTML,但它也非常擅长生成 XML。

我没有费心为您解决整个问题(即对输入进行双重拆分(“,”,然后是“:”)。)但这就是您使用 JATL 的方式。

    final String a = "stuff";
    HtmlWriter html = new HtmlWriter() {
        @Override
        protected void build() {
            //If condition1
            start("Request").start("ValueOfA").text(a).end().end();
        }
    };
    //Now write.
    StringWriter writer = new StringWriter();
    String results = html.write(writer).getBuffer().toString();

这会产生

<Request><ValueOfA>stuff</ValueOfA></Request>

所有正确的转义都为您处理。

于 2012-04-19T13:10:55.313 回答