Java 使用解组器访问XML文档的特定部分
我有一个XML文档,其中包含一些配置信息,我必须从java类访问这些信息。我可以使用java解组来访问这些信息,但问题是,我无法访问xml文件的特定部分。每次访问信息时,我必须首先获取根标记,即我只能访问根标记元素,但我需要访问另一部分中的标记。这是我的xml文件Java 使用解组器访问XML文档的特定部分,java,xml,jaxb,unmarshalling,Java,Xml,Jaxb,Unmarshalling,我有一个XML文档,其中包含一些配置信息,我必须从java类访问这些信息。我可以使用java解组来访问这些信息,但问题是,我无法访问xml文件的特定部分。每次访问信息时,我必须首先获取根标记,即我只能访问根标记元素,但我需要访问另一部分中的标记。这是我的xml文件 <?xml version="1.0" encoding="UTF-8"?> <adapter name="Hua_GPRS_CS5_4.7" type="ASN.1" version="1.0" descr
<?xml version="1.0" encoding="UTF-8"?>
<adapter name="Hua_GPRS_CS5_4.7" type="ASN.1" version="1.0" description="Huawie GPRS Output CDR Version 4.7"
execclass="hua.gprs.HuaGPRSFileExecutor" parallel="1" mode="server" statusfile="HuaGPRSStatus.csv" merge_factor="1" active="true">
<dirconfig>
<Poll protocol="" host="" path="./data/huagprs/source" pwd="" user="" clogging="true" startdir="" enddir=""
pattern="(.*)\.(\d{6})(\d{6})(\d{4})_(.*)" metafields="fileName,exchange,fileDate,fileTime,fileSeq,junk"/>
<Source path="./data/huagprs/source" clogging="false"/>
<Backup path="./data/huagprs/backup" active="false"/>
<Staging path="./data/huagprs/staging" clogging="false"/>
<Output path="./data/huagprs/output" clogging="false" compress="gz"/>
<Error path="./data/huagprs/error" clogging="true"/>
<Target protocol="" host="" path="/" pwd="" user="" active="true"/>
</dirconfig>
<dbConf id="1" name ="jjj" drivername="oracle.jdbc.driver.OracleDriver" hostname="localhost" portname="1521" dbname="rrr" servicename="orcl" user="param" password="param" sid="orcl">
<TableConfig ID= "1" TableName="">
</TableConfig>
</dbConf>
</adapter>
获取值的主类
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class ReadXML {
/**
* @param args
*/
public static void main(String[] args) {
try {
File file = new File("./file/config.ds");
JAXBContext jaxbContext2 = JAXBContext.newInstance(Adapter.class);
Unmarshaller jaxbUnmarshaller2 = jaxbContext2.createUnmarshaller();
Adapter db2 = (Adapter) jaxbUnmarshaller2.unmarshal(file);
System.out.println(db2.active);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
您可以使用StAX XMLStreamReader提前解析XML文档。然后前进到要解组的XML元素。然后使用unmarshal方法,该方法将XMLStreamReader作为参数
在主线程javax.xml.stream.XMLStreamException中获取此错误异常:[row,col]:[-1,-1]消息:find:END_DOCUMENT,com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTagXMLStreamReaderImpl.java:1250在com.gamma.ReadXML.mainReadXML.java:30应该是START\u元素或END\u元素,非常感谢,但是你能告诉我一件事,如果XML标记是大写的,它能够读取吗??
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class ReadXML {
/**
* @param args
*/
public static void main(String[] args) {
try {
File file = new File("./file/config.ds");
JAXBContext jaxbContext2 = JAXBContext.newInstance(Adapter.class);
Unmarshaller jaxbUnmarshaller2 = jaxbContext2.createUnmarshaller();
Adapter db2 = (Adapter) jaxbUnmarshaller2.unmarshal(file);
System.out.println(db2.active);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}