2

我已经使用令牌根据令牌计数循环所有元素,并看到在我的 xml 结构中,它只有令牌类型 = 5 和令牌类型 = 0 来自这个网络

http://vtd-xml.sourceforge.net/userGuide/6.html

那么有没有办法在 vtd-xml 中找到结束标记

因为,我的 xml 看起来像这样。

<ZDA>
<userdata>
    <firstname>Eak</firstname>
    <lastname>Tan</lastname>
</userdata>
<list name="employee">
    <entry>
        <first_name>firstName</first_name>
        <title>title</title>
        <empid>1</empid>
        <second_name>secondName</second_name>
        <last_name>lastName</last_name>
        <date_of_birth>dateOfBirth</date_of_birth>
        <pin>pin</pin>
        <province>province</province>
        <start_date>startDate</start_date>
        <list name="address">
            <entry>
                <addressid>1</addressid>
                <empid>1</empid>
                <sequence>1</sequence>
                <detail>address11</detail>
            </entry>
            <entry>
                <addressid>2</addressid>
                <empid>1</empid>
                <sequence>2</sequence>
                <detail>address12</detail>
            </entry>
            <entry>
                <addressid>3</addressid>
                <empid>1</empid>
                <sequence>3</sequence>
                <detail>address13</detail>
            </entry>
        </list>
    </entry>    
</list>

我使用 ap.iterate() 循环遍历所有 xml 结构。

我想使用结束标记来指示何时到达 --></entry>将对象添加到当前列表。当它到达 -></list>如果它有外部列表,则将这些列表添加到上层对象。

我希望这个过程像一个库,所以我使用反射来调用方法和对象。

现在,我只有一个问题,程序如何知道相应地添加到哪里。

任何获取结束标记或解析 XML 以使其具有结束标记的方法也是如此。

最好的问候,谢谢。

4

2 回答 2

2

vtd 解析器不保留结束标记,因为它与起始标记相同。您正在寻找结束标签的任何原因?

于 2012-07-15T05:18:43.013 回答
1

我有一个类似的问题,虽然我不知道您可以将关闭标记作为另一个元素(正如可能很好命名的 @vtd-xml-author 所指出的那样),但我选择了使用导航对象的路线解析每个孩子。

首先,我得到了导航,然后进入了第一个孩子。然后,我简单地移动到下一个兄弟,注册开始标记的偏移量,然后使用当前偏移量和前一个偏移量来获取整个元素。一旦下一个兄弟移动返回false,我退出到前一个元素,移动到下一个兄弟,并且能够计算前一个兄弟的最后一个子元素的关闭位置(当没有时继续返回父元素更多的兄弟姐妹,然后在我到达最后一个元素时使用文件的长度)。

于 2015-05-13T11:57:02.417 回答