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

我解释数据交换是一个基于模板的解析器,正如我解释的
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节点并替换该值.

点赞