Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用解组器访问XML文档的特定部分_Java_Xml_Jaxb_Unmarshalling - Fatal编程技术网

Java 使用解组器访问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文档,其中包含一些配置信息,我必须从java类访问这些信息。我可以使用java解组来访问这些信息,但问题是,我无法访问xml文件的特定部分。每次访问信息时,我必须首先获取根标记,即我只能访问根标记元素,但我需要访问另一部分中的标记。这是我的xml文件

<?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();
          }

    }

}