【发布时间】:2015-12-20 07:27:20
【问题描述】:
我正在尝试从 xml 文档中检索值。 XML 大小高达 3gb。所以我选择使用 java 的 StaX 解析器。 在这里,我使用下面的代码来检索标签之间的值。 如果我执行代码,那么我会从一个标签中获取值。 我想要三个 Tag 值。
<Author>
<Number>1</SequenceNumber>
<Role>B01</ContributorRole>
<Name>Klaus Misgeld</PersonName>
<NameInverted>Misgeld, Klaus</PersonNameInverted>
<BeforeKey>Klaus</NamesBeforeKey>
<KeyNames>Misgeld</KeyNames>
</Author>
<Author>
<Number>2</SequenceNumber>
<Role>B01</ContributorRole>
<Name>Karl Molin</PersonName>
<NameInverted>Molin, Karl</PersonNameInverted>
<BeforeKey>Karl</NamesBeforeKey>
<KeyNames>Molin</KeyNames>
</Author>
<Author>
<Number>3</SequenceNumber>
<Role>B01</ContributorRole>
<Name>Klas Amark</PersonName>
<NameInverted>Amark, Klas</PersonNameInverted>
<BeforeKey>Klas</NamesBeforeKey>
<KeyNames>Amark</KeyNames>
</Author>
Same XML Tag...
如何从同一个xml标签中获取值?
我试过了 XMLReader.java
XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new FileInputStream(fileName));
while(xmlEventReader.hasNext()){
XMLEvent xmlEvent = xmlEventReader.nextEvent();
if (xmlEvent.isStartElement()){
StartElement startElement = xmlEvent.asStartElement();
if(startElement.getName().getLocalPart().equals("Product")){
emp = new BookSpecBean();
}
//set the other varibles from xml elements
if(startElement.getName().getLocalPart().equals("Author")){
else if(startElement.getName().getLocalPart().equals("Number")){
xmlEvent = xmlEventReader.nextEvent();
emp.setSequencenumberchar(xmlEvent.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals("Role")){
xmlEvent = xmlEventReader.nextEvent();
emp.setContributorrolechar(xmlEvent.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals("Name")){
xmlEvent = xmlEventReader.nextEvent();
emp.setPersonnamechar(xmlEvent.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals("NameInverted")){
xmlEvent = xmlEventReader.nextEvent();
emp.setPersonnameinvertedchar(xmlEvent.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals("BeforeKey")){
xmlEvent = xmlEventReader.nextEvent();
emp.setNamebeforekeychar(xmlEvent.asCharacters().getData());
}else if(startElement.getName().getLocalPart().equals("KeyNames")){
xmlEvent = xmlEventReader.nextEvent();
emp.setKeynameschar(xmlEvent.asCharacters().getData());
它检索单个值。 我怎样才能检索所有三个标签值。 我正在使用 StaX 解析器。 谢谢你的回答。。
【问题讨论】: