SAX解析器不读取节点内容的一部分

时间:2016-11-22 08:35:10

标签: java sax double-quotes

我有一个由MS Excel创建的XML文件,其元素如下:

SELECT
    x.*, CONCAT(u.FirstName, ' ', u.LastName) AS name, u.Gender AS gender 
FROM (
    SELECT
        p.id , p.post, p.date_time, p.user_id AS uid, COUNT(c.post_id) AS 'count'
    FROM
        posts p
    LEFT JOIN
        comments c ON p.id = c.post_id
    GROUP BY
        p.id
) x 
LEFT JOIN
    users u ON u.id = uid

当第一行的第二个单元格被函数读取时:

   <Row ss:Height="18.75">
    <Cell ss:StyleID="s24"/>
    <Cell ss:StyleID="s25"><Data ss:Type="String">22. Department&quot;GS &quot;NAES &quot;ABCDEF&quot;in Brucele</Data></Cell>
    <Cell ss:StyleID="s24"/>
    <Cell ss:StyleID="s24"/>
    <Cell ss:StyleID="s24"/>
    <Cell ss:StyleID="s259"/>
   </Row>
   <Row ss:Height="45">
    <Cell ss:StyleID="s97"><Data ss:Type="String">1210.1</Data></Cell>
    <Cell ss:StyleID="s98"><Data ss:Type="String">Boss of Department&quot;GS &quot;NAES &quot;ABCDEF&quot;in Brucele</Data></Cell>
    <Cell ss:StyleID="s99"><Data ss:Type="String">керівник</Data></Cell>
    <Cell ss:StyleID="s223"><Data ss:Type="Number">22</Data></Cell>
    <Cell ss:StyleID="s100"><Data ss:Type="Number">1</Data></Cell>
    <Cell ss:StyleID="s276"><Data ss:Type="String">Petrov ivan</Data></Cell>
   </Row>

public void characters(char[] ch, int start, int length){ String str = new String(ch, start, length); ... } 仅包含textnode的“22. Department”部分。

1 个答案:

答案 0 :(得分:1)

您应该在characters()中收集字符串,因为对于标记对之间的内容,可以多次调用此方法。我的示例实体&quot;强制解析器进行多次characters()调用。注意:解析器可以为实体调用特殊的回调。

因此,您应该为解析器中附加字符串的字符使用实例变量。如果新元素开始,您必须清除其内容。