Reputation: 832
My parser for Data exchange is a template-based parser as I explained here. Works perfectly for single level XML/JSON but fails in the case of redundant tags.
Ex: For this request
<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>
After parsing the above request using a template
<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>
Right now I am replacing the node value based on node name, which is clearly a failure.
I thought of using parentname+nodename but even that fails in this case. And the other names also fail if the request is complex enough.
What is the solution for this problem?
P.S: I am not using JAXB because I have to create beans and change them when the request changes by time.
Upvotes: 4
Views: 44