Java SAX解析XML文件

时间:2014-12-01 07:44:42

标签: java xml

我有一个要处理的xml文件,但是xml文件不是传统的xml格式,通常xml具有以下格式,然后我可以使用java的SAXParser来提取信息:

<Info>
<Product id>123456</Product id>
<code2>985632</code2>
<code3>896523</code3>
<Product id>123343</Product id>
<code2>935632</code2>
<code3>856523</code3>
</Info>

但是现在我的xml采用这种形式,我不能使用SAXParser技术来搜索start-tag和end-tag。有什么好主意吗?

<Info>
<Product id="123456" code2="985632" code3="896523" />
<Product id="123343" code2="935632" code3="856523" />
...
</Info>

通常,java SAX解析器使用以下方法来检测xml的开始标记,xml&#39; s eng标记和xml的内容,但由于我的xml甚至没有正确的结束标记,所以我没有确定我是否可以使用java SAX解析器。

public void startElement(String uri, String localName,
        String qName, Attributes attributes)
throws SAXException {

}

public void endElement(String uri, String localName, String qName)
throws SAXException {
}

public void characters(char ch[], int start, int length)
throws SAXException {
}

1 个答案:

答案 0 :(得分:1)

您必须通过执行以下操作来获取这些标记的属性:

@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {

    int length = attributes.getLength();

    for(int i=0; i<length; i++) {

            // Qualified name by index
            String name = attributes.getQName(i);

            // Attribute value by index
            String value = attributes.getValue(i);

            // Namespace URI by index
            String nsUri = attributes.getURI(i);

            // Local name by index
            String lName = attributes.getLocalName(i);
        }
    }

这将通过索引获取标记中的所有属性。

Source