gpt4 book ai didi

java - 如何处理基于模板的解析器中的冗余标记名称

转载 作者:数据小太阳 更新时间:2023-10-29 02:11:53 26 4
gpt4 key购买 nike

我的数据交换解析器是一个基于模板的解析器,正如我解释的那样 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 并在请求随时间变化时更改它们。

最佳答案

考虑使用 XPATH 而不是使用 parentname+nodename .使用 XPATH 在模板中找到合适的 XML 节点并替换值。

关于java - 如何处理基于模板的解析器中的冗余标记名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42777898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com