在jaxb中包含标记

时间:2013-11-07 08:17:16

标签: java xml jaxb

我有一个以下结构的xml文件:

<root>
<paramsToInclude>
    <params id="id1">
        <param11>val1</param11>
        <param12>val2</param12>
        <param13>val3</param13>
        <param14>val4</param14>
    </params>

    <params id="id3">
        <param31>val1</param31>
        <param32>val2</param32>
    </params>
</paramsToInclude>

<process>
    <subprocess1>
        <include params="id1"/>
        <query>
            SELECT *
            FROM
            table;
        </query>
    </subprocess2>

    <subprocess1>
        <rule>rule1</rule>
        <rule>rule2</rule>
    </subprocess2>

    <subprocess3>
        <processParam>val1</processParam>
        <include params="id2"/>
        <include params="id3"/>
    </subprocess3>
</process>

我正在使用jaxb将这个xml解析为java类。有没有办法用文件开头的值来替换进程中的包含?我的意思是,我不会将文件解析为好像它看起来像

<root>
<paramsToInclude>
    <params id="id1">
        <param11>val1</param11>
        <param12>val2</param12>
        <param13>val3</param13>
        <param14>val4</param14>
    </params>

    <params id="id3">
        <param31>val1</param31>
        <param32>val2</param32>
    </params>
</paramsToInclude>

<process>
    <subprocess1>
        <param11>val1</param11>
        <param12>val2</param12>
        <param13>val3</param13>
        <param14>val4</param14>
        <query>
            SELECT *
            FROM
            table;
        </query>
    </subprocess2>

    <subprocess1>
        <rule>rule1</rule>
        <rule>rule2</rule>
    </subprocess2>

    <subprocess3>
        <processParam>val1</processParam>
        <param11>val1</param11>
        <param12>val2</param12>
        <param13>val3</param13>
        <param14>val4</param14>
        <param31>val1</param31>
        <param32>val2</param32>
    </subprocess3>
</process>

有可能这样做吗?我发现链接http://thetechietutorials.blogspot.com/2011/08/jaxb-tutorial-part-2-jaxb-with-xinclude.html如何从另一个文件中包含这个内容,但评论说对同一个文件不可能这样做(我明白我可以把它包含在另一个xml中,但我不认为这是最好的方式)。另外我不想使用hashMap,因为这样包含的params将存储在hashMap中,而processParam(来自subprocess3)将是类变量。 有办法以某种方式这样做吗?

0 个答案:

没有答案