繁体   English   中英

具有空元素的 saxparser java xml 文件

[英]saxparser java xml file with null element

我正在尝试使用 SAxparser 解析 xml 文件。 除了 xml 文件中的元素标记包含空值的情况外,一切正常。 例如下面的 xml 元素

<QuotaCode>
<null/>
</QuotaCode>

被解析为 2 个空行。 下面是代码

public class ImportXML2 extends DefaultHandler {


    private StringBuilder elementValue = new StringBuilder();


    @Override
    // A start tag is encountered.
    public void startElement(String uri, String localName, String qName, Attributes attributes)
            throws SAXException {

        elementValue.setLength(0);


    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        switch (qName) {


            case "Total_number_of_packages": {
                System.out.println(elementValue.toString());
                break;
            }
            case "QuotaCode": {
                System.out.println("quote " + elementValue.toString());

                break;
            }
            case "office_code": {
                System.out.println(elementValue.toString());
                break;
            }


    } }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        if (elementValue == null) {

        } else {


            elementValue.append(ch, start, length);
        }
    }
}

结果是(QuotaCode 标记在 xml doc 中出现 2 次):

4
office_1
quote 

quote

你的解释是错误的。 SAX 正在触发与您预期不同的事件。

<QuotaCode>
<null/>
</QuotaCode>

当 SAX 解析器读取此文档时,它将触发

  • <QuotaCode>的 startElement
  • 换行符(不可见)
  • <null/>的 startElement
  • <null/>的 endElement
  • 换行符(不可见)
  • </QuotaCode>的 endElement

也许您希望<null/>成为元素文本? 然后你需要像这样转义这些数据:

<QuotaCode>
&gt;null/&lt;
</QuotaCode>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM