在Java中将带有自定义运算符的字符串转换为XML格式 输入是一个包含键、val对和运算符的字符串 运算符支持“和”、“或”、“或”() 操作顺序是从左到右,但以“()”优先 输出是XML格式的字符串
例如: 输入01:在Java中将带有自定义运算符的字符串转换为XML格式 输入是一个包含键、val对和运算符的字符串 运算符支持“和”、“或”、“或”() 操作顺序是从左到右,但以“()”优先 输出是XML格式的字符串,java,xml,string,recursion,Java,Xml,String,Recursion,例如: 输入01: String input = "001,1399" 输出01: <ITEM key="001" val="1399" /> 输出02: //Same as output01 输入03: String input = "001,1399 OR 002,1399" 输出03: <CONDITION rel="OR" > <ITEM key="001" val="1399" /> <ITEM key="00
String input = "001,1399"
输出01:
<ITEM key="001" val="1399" />
输出02:
//Same as output01
输入03:
String input = "001,1399 OR 002,1399"
输出03:
<CONDITION rel="OR" >
<ITEM key="001" val="1399" />
<ITEM key="002" val="1399" />
</CONDITION>
输出04:
<CONDITION rel="OR" >
<CONDITION rel="AND" >
<CONDITION rel="OR" >
<ITEM key="001" val="1399" />
<ITEM key="002" val="1399" />
</CONDITION>
<ITEM key="011" val="1564" />
</CONDITION>
<ITEM key="011" val="1567" />
</CONDITION>
输出05:
<CONDITION rel="AND" >
<CONDITION rel="OR" >
<ITEM key="001" val="1399" />
<ITEM key="002" val="1399" />
</CONDITION>
<CONDITION rel="OR" >
<ITEM key="011" val="1564" />
<ITEM key="011" val="1567" />
</CONDITION>
</CONDITION>
有人能给我一个提示吗?hint:1)解析表达式(例如,由Basil Bourque建议的Antlr)并构建一个表示输入表达式的树结构。2) 修改树结构以消除不必要的嵌套(在示例中用冗余括号表示)。3) 遍历(修改过的)树并构建输出字符串。提示:1)解析表达式(例如,由Basil Bourque建议的Antlr)并构建表示输入表达式的树结构。2) 修改树结构以消除不必要的嵌套(在示例中用冗余括号表示)。3) 遍历(修改过的)树并生成输出字符串。
<CONDITION rel="OR" >
<CONDITION rel="AND" >
<CONDITION rel="OR" >
<ITEM key="001" val="1399" />
<ITEM key="002" val="1399" />
</CONDITION>
<ITEM key="011" val="1564" />
</CONDITION>
<ITEM key="011" val="1567" />
</CONDITION>
String input = "001,1399 OR 002,1399 AND (011,1564 OR 011,1567)"
<CONDITION rel="AND" >
<CONDITION rel="OR" >
<ITEM key="001" val="1399" />
<ITEM key="002" val="1399" />
</CONDITION>
<CONDITION rel="OR" >
<ITEM key="011" val="1564" />
<ITEM key="011" val="1567" />
</CONDITION>
</CONDITION>