在java中使用属性和属性值解析XML
我的情况是解析一个XML,它在属性和级别上有很多数据来访问XML层次结构中的数据 不知道使用哪种解析器来进行分析是一种有效的分析方法。解析XML以及如何访问属性及其值 我更喜欢DOM解析器并试图解析它,但它有点复杂,因为我需要获得一个标记->然后是一个属性->然后是attr值,在这种情况下需要获得另一个标记访问在java中使用属性和属性值解析XML,java,xml,parsing,Java,Xml,Parsing,我的情况是解析一个XML,它在属性和级别上有很多数据来访问XML层次结构中的数据 不知道使用哪种解析器来进行分析是一种有效的分析方法。解析XML以及如何访问属性及其值 我更喜欢DOM解析器并试图解析它,但它有点复杂,因为我需要获得一个标记->然后是一个属性->然后是attr值,在这种情况下需要获得另一个标记访问 <testCodeIdentifier classCode="ROL" > <realmCode code="QD" />
<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..我们如何使用它???如果XML文件的大小不会太大,您可以查看以下选项:
方法取决于您的需要。如果您打算在复杂的业务操作中使用大多数值。也许用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);
您能提供一个快速示例吗?添加了一个示例XML和需要访问的属性;我目前正在使用DOM解析器,但使用它有点混乱。如果您希望一次获得整个数据,最好使用DOM,这取决于您的需求,但DOM的问题是,大型XML文件需要巨大的内存,如果您希望分段解析数据,则使用SAX解析器两者都是有效的,但DOM比SAXPATH更容易通常是提取你想要的东西的最简单方法。问题是,您还没有说明您想要什么。JAXB(JSR-222)可以从XML模式生成对象模型,就像JiBX和XStream一样,您也可以从对象开始并应用注释来控制类如何映射到XML。JAXB是一个特定的jar;我可以从哪里下载??如何使用它的任何输入???@GOK-JAXB实际上是一个具有多个实现的规范(JSR-222)。JavaSE6中提供了一个实现。我是EclipseLink JAXB(MOXy)的负责人,我们的impl在以下位置提供:其他实现包括Metro和JaxMe。