有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用SAX解析器解析带有二进制数据元素的XML文件?

我收到需要解析的XML文件。我经常用java编写代码,所以java SAX是我的天赋 第一选择。XML文件包含文本元素和一个二进制元素(.xls文件)的组合

我的解析器处理程序如下所示:

public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException{

        if(qName.equalsIgnoreCase("To")){
           toFlag = true;
        }

        if(qName.equalsIgnoreCase("Subject")){
           subjectFlag = true;
        }

        if(qName.equalsIgnoreCase("OutDocumentId")){
           outdocmentIdFlag = true;
        }

        if(qName.equalsIgnoreCase("Filename")){
           filenameFlag = true;
        }

        if(qName.equalsIgnoreCase("EmailType")){
            emailTypeFlag = true;
        }

        if(qName.equalsIgnoreCase("Context")){
            contextTypeFlag = true;
        }

        if(qName.equalsIgnoreCase("Blob")){
            blobTypeFlag = true;
        }


    }

元素数据在这里被解析:

public void characters(char ch[], int start, int length) throws SAXException{

        String text = null;
        if (toFlag) {
            text = new String(ch, start, length);
            getRequest().setRecipientEmail(text);
            toFlag = false;
        }

        if (subjectFlag) {
            text = new String(ch, start, length);
            getRequest().setSubject(text);
            subjectFlag = false;
        }

        if (outdocmentIdFlag) {             
            text = new String(ch, start, length);
            getRequest().setOutDocId(text);
            outdocmentIdFlag = false;
        }

        if (filenameFlag) {
            text = new String(ch, start, length);
            getRequest().setFilename(text);
            filenameFlag = false;
        }

        if(emailTypeFlag) {
            text = new String(ch, start, length);
            getRequest().setEmailType(Integer.parseInt(text));
            emailTypeFlag = false;
        }

        if(contextTypeFlag) {
            text = new String(ch, start, length);
            getRequest().setContext(text);
            contextTypeFlag = false;
        }

        if(blobTypeFlag) {
            text = new String(ch, start, length);               
            try {
                getRequest().setBlob(Hibernate.createBlob(text.getBytes("UTF-16")));
            } catch (UnsupportedEncodingException e) {
                     System.out.println("Error creating blob");
                     e.printStackTrace();
            }
            blobTypeFlag = false;
        }

    }

}

问题在于blob元素,它被读入为char[] (我认为这是不正确的)。。。因为这就是他们的父母 类允许在事件处理期间重写

当一个元素不可用时,有人知道如何使用SAX解析吗 文本而是二进制

非常感谢


共 (1) 个答案