我的数据交换解析器是一个基于模板的解析器,正如我解释here。 适用于单级XML / JSON,但在冗余标记的情况下则失败。
Ex:对于此请求
<Result>
<Result_Flag>1</Result_Flag>
<Result_Code>2</Result_Code>
<Result_Message>3</Result_Message>
<Result_Description>4</Result_Description>
</Result>
<RR>
<OR>
<I_Number>5</I_Number>
<OrderNumber>6</OrderNumber>
<Agents>
<Agent>
<name>7</name>
<id>8</id>
<I_Number>9</I_Number>
</Agent>
<Agent>
<name>10</name>
<id>11</id>
<I_Number>12</I_Number>
</Agent>
</Agents>
</OR>
<OR>
<I_Number>13</I_Number>
<OrderNumber>14</OrderNumber>
<Agents>
<Agent>
<name>15</name>
<id>16</id>
<I_Number>17</I_Number>
</Agent>
<Agent>
<name>18</name>
<id>19</id>
<I_Number>20</I_Number>
</Agent>
</Agents>
</OR>
</RR>
使用模板解析上述请求后
<Result>
<Result_Flag>1</Result_Flag>
<Result_Code>2</Result_Code>
<Result_Message>3</Result_Message>
<Result_Description>4</Result_Description>
</Result>
<RR>
<OR>
<I_Number>20</I_Number>
<OrderNumber>14</OrderNumber>
<Agents>
<Agent>
<name>18</name>
<id>19</id>
<I_Number>20</I_Number>
</Agent>
<Agent>
<name>18</name>
<id>19</id>
<I_Number>20</I_Number>
</Agent>
</Agents>
</OR>
<OR>
<I_Number>20</I_Number>
<OrderNumber>14</OrderNumber>
<Agents>
<Agent>
<name>18</name>
<id>19</id>
<I_Number>20</I_Number>
</Agent>
<Agent>
<name>18</name>
<id>19</id>
<I_Number>20</I_Number>
</Agent>
</Agents>
</OR>
</RR>
现在我正在根据节点名称替换节点值,这显然是一个失败。
我想过使用parentname + nodename但在这种情况下甚至失败了。如果请求足够复杂,其他名称也会失败。
这个问题的解决方案是什么?
P.S:我没有使用JAXB,因为我必须创建bean并在请求随时间变化时更改它们。