我解释数据交换是一个基于模板的解析器,正如我解释的
here.
适用于单级XML / JSON,但在冗余标记的情况下失败.
例如:对于此请求
<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并在请求随时间变化时更改它们.
最佳答案 而不是使用父名nodename考虑使用
XPATH.使用XPATH在模板中查找适当的XML节点并替换该值.