`
mugicoffee
  • 浏览: 37427 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

用JAVA解析不规范XML文件

阅读更多

任务:读取一个没有root element的xml文件里的内容。

(本来是要读取jboss 里定义好了的queue,但实在不知道有什么方法可以采用,只好直接读取自定义的xml文件了) 

翻阅了很多资料,java里对xml文件的读取大抵采用SAX,dom或者jdom方式。但无论用那种方法,在读取xml文件,生成一个Document 对象时均报错。

在相关xml文献里发现,xml的规范语法是需要包含一个root element的,而我需要读取的文档则没有写入root element。怎么办?

寻思了半天,想了个巨笨的方法,暂时先把文件转成inputstream读入内存,然后在字符串里人为加上一个根节点。最后利用普通解析xml文件的方法解析这段数据流。程序代码如下:

 

public string[] readXMLFile() throws javax.xml.parsers.ParserConfigurationException,
    org.xml.sax.SAXException, java.io.IOException {

        //将文件转换为字符串,然后添上root element

        String fileName = "test.xml";     
        FileReader fileIn = new FileReader(fileName);
        BufferedReader buf=new BufferedReader(fileIn);
        StringBuffer rets = new StringBuffer();
        String s = "";
        while(( s = buf.readLine()) != null){
            rets.append(s+"\n");
            s="";
        }
        buf.close();
        fileIn.close();
        String tmpXMLString = "<tmproot>" + rets.toString() + "</tmproot>";

        //构建 document object  ,并读取节点内容,并讲queue名称存入queueList中

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder=factory.newDocumentBuilder();
        Document doc = builder.parse(new InputSource(new StringReader(tmpXMLString)));
       
        NodeList idents =doc.getElementsByTagName("queue");       
       
        Node tmpNode = null;
        int queueCount = idents.getLength();
        String[] queueList = new String[queueCount];
       
        for ( int i = 0 ; i < queueCount; i ++ ) {
             queueList[i] = idents.item(i).getTextContent();// SE v1.5

     //queueList[i] = tmpNode.getChildNodes().item(0).getNodeValue(); //SE v1.4     
         }

        return queueList;
    }

 

 暂时记录一下 ,等找到更合适的方法再替换。

分享到:
评论

相关推荐

    利用java语言解析xml文件

    ### 使用Java语言解析XML文件的关键知识点 #### 一、引言 XML(可扩展标记语言)是一种用于存储和传输数据的标准格式。它以其强大的结构化数据表示能力而被广泛应用于不同场景,例如配置文件、数据交换等。Java作为...

    java xml文件解析

    在Java中,有多种解析XML文件的方式,包括DOM (Document Object Model)、SAX (Simple API for XML) 和 DOM4J。这些方法各有优势和局限性,选择哪一种取决于具体的应用场景和需求。 #### 二、DOM 解析方式 DOM 解析...

    xml文件自动转成java对象工具

    总之,XML文件自动转成Java对象工具是Java开发中不可或缺的一部分,它极大地简化了XML数据处理,提高了开发效率。通过理解和利用这类工具,开发者可以更专注于业务逻辑,而非基础的数据转换工作。

    java处理xml文件

    - **SAX解析:** SAX(Simple API for XML)是一种基于事件驱动的解析方式,它不将整个XML文件加载到内存,而是逐行读取,适合处理大型XML文件。 - **StAX解析:** StAX(Streaming API for XML)是另一种流式API...

    java读取xml文件

    然后,你可以使用 `parse` 方法解析 XML 文件,并对解析后的 `Document` 对象进行操作。 除了 DTD,XML 还可以使用 XSD(XML Schema Definition)进行更复杂的结构验证。XSD 提供了更强大的类型系统,包括数据类型...

    java生成xsd,xml示例

    4. 将Java对象转换为XML:调用`Marshaller.marshal()`方法,将Java对象写入XML文件。 同样,Java也可以反向操作,从XML生成Java对象或XSD。使用Unmarshaller可以将XML数据解析为Java对象,而使用工具如JAXB或XML ...

    java解析apk文件

    首先,Java解析APK主要依赖于对ZIP文件格式的理解,因为APK本质上就是一个ZIP文件,其结构遵循特定的Android规范。你可以使用Java内置的`java.util.zip`包来读取和解压APK,然后提取所需的元数据。以下是一些关键...

    xml数据前后台解析:jdom与dom4j源码,程序可以跑

    1. **JDOM**:JDOM是Java针对DOM规范实现的一个轻量级库,它提供了更直观、更高效的API来处理XML文档。JDOM允许开发者直接使用Java对象模型来创建、修改和读取XML。例如,使用JDOM创建XML文档的代码可能如下: ```...

    Java中如何解析XML文件

    #### 四、Java解析XML 在Java中,解析XML文件主要通过DOM(Document Object Model)和SAX(Simple API for XML)两种方式。这里我们使用DOM方式进行解析。 #### 五、Java DOM解析示例 Java代码`DomTest.java`示例...

    java 读取Ftp指定位置的文件解析并入库

    标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...

    xml文件转xsd文件

    总结来说,"xml文件转xsd文件"是为了建立XML文档的结构规范,方便数据验证并利用Java等编程语言进行数据处理。这个过程中涉及到XML解析、XSD设计、数据验证和Java对象的生成,是XML数据处理的一个重要环节。了解和...

    java解析FSN文件

    Java解析FSN文件涉及到的是Java编程语言在处理特定文件格式时的应用。FSN(File System Navigation)文件可能是一种用于记录文件系统导航信息的文件格式,它可能包含了目录结构、文件属性或者其他的系统元数据。在...

    xom-1.2.6,Java编程思想上提到的解析XML文件的工具

    在使用XOM解析XML文件时,首先需要创建一个`Builder`对象,然后调用`build()`方法读取XML文件。例如: ```java File file = new File("example.xml"); Builder builder = new Builder(); try { Document doc = ...

    XML和Java解析技术

    - **基于事件的编程(SAX)**:介绍SAX模型用于解析大型XML文件的高效方式。 - **基于规则的编程(XSLT)**:探讨XSLT在Java中实现XML文档转换的具体实践。 #### 三、时间安排 课程采用7天的时间表进行安排: - 第...

    java解析XML详解.pdf

    Java作为一门广泛使用的编程语言,提供了多种方法来解析和处理XML文件。本文将详细介绍Java解析XML的几种常用技术。 ### DOM(Document Object Model) DOM是W3C组织推荐的处理XML的一种接口规范。它将XML文档视为...

    xml 转Java bean工具

    这些工具能够解析XML文件,并根据XML的结构自动生成对应的Java Bean类。 标题中的"xml 转Java bean工具"指的就是这样一种工具,它能够帮助开发者快速地将XML数据映射到Java对象上。这类工具通常会分析XML文件的结构...

    JDOM解析XML

    2. 使用`SAXBuilder`的`build()`方法读取XML文件并构建`Document`对象。 3. `Document`对象代表了整个XML文档,你可以通过其根元素`getRootElement()`访问XML的顶层元素。 4. 通过遍历元素、属性和文本节点,可以...

    java链接oracle数据库生成xml文件

    为了生成XML文件,我们使用DOM4J库,它是一个强大的Java XML API,可以方便地创建、解析和操作XML文档。首先,需要添加DOM4J的依赖,如`dom4j-1.6.1.jar`。然后,创建Document对象,定义Element结构,并填充从数据库...

    java解析xml根式数据

    根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ### 1. JDBC 概述 JDBC(Java Database ...同时,XML 作为一种数据交换格式,在实际开发中也扮演着重要角色,特别是在配置文件和数据传输方面。

    xml解析例子得到各个节点信息

    例如,使用Java的`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`类可以创建DOM解析器,然后调用`parse()`方法解析XML文件。一旦解析完成,`Document`对象可以通过`getElementsByTagName()`、`...

Global site tag (gtag.js) - Google Analytics