我有一种情况来解析XML,它在属性和级别中拥有大量数据来访问XML层次结构中的数据。
对于使用哪个解析器来解析它是一种有效的方法感到困惑。解析XML以及如何访问属性&它的价值。
我更喜欢使用DOM解析器并尝试解析它,但它有点复杂,因为我需要获取标记 - >那么一个属性 - >那么attr值和那个条件需要获得另一个标签访问。
<testCodeIdentifier classCode="ROL" >
<realmCode code="QD" />
<id assigningAuthorityName="PRMKEY" extension="SJC16494" />
<statusCode code="active" />
<playingTestCodeDetails classCode="ENT" determinerCode="INSTANCE" >
<realmCode code="QD" />
<id assigningAuthorityName="PRMORDCODE" extension="16494" />
<id assigningAuthorityName="TESTNUMINBOOK" extension="16494" />
<code code="16494" codeSystemName="QTIM" displayName="SureSwab Candidiasis" />
<name use=""></name>
<asSeeAlsoCode classCode="ROL" >
<realmCode code="QD" />
<code code="7600" displayName="Sample See Also Name" ></code>
</asSeeAlsoCode>
<asSeeAlsoCode classCode="ROL" >
<realmCode code="QD" />
<code code="6496" displayName="Sample See Also Name" ></code>
</asSeeAlsoCode>
</playingTestCodeDetails>
</testCodeIdentifier>
上面是示例XML,其中所有属性都作为我需要遍历它们的数据出现... JAXB..how我们可以使用它吗????
答案 0 :(得分:0)
如果XML文件的大小不是 huge ,您可以查看以下选项:
答案 1 :(得分:0)
这种方法取决于您的需求。如果要在复杂的业务操作中使用大多数值。可能需要使用XStream或其他绑定框架加载XML。 现在,如果您只对几个值感兴趣,并且您希望处理大型XML(或许多小型XML)。可能Sax解析可能更适合。
这是一个例子。
final SAXParserFactory factory = SAXParserFactory.newInstance();
final SAXParser saxParser = factory.newSAXParser();
final DefaultHandler handler = new DefaultHandler() {
@Override
public void startElement(final String uri, final String localName, final String qName,
final Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
if ("realmCode".equals(qName)) {
System.out.println(attributes.getValue("code"));
}
}
@Override
public void endElement(final String uri, final String localName, final String qName)
throws SAXException {
}
@Override
public void characters(final char ch[], final int start, final int length) throws SAXException {
}
};
saxParser.parse(myInputStreamOrFile, handler);