gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:37:13 25 4
gpt4 key购买 nike

我收到需要解析的 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[](我认为这是不正确的)......因为那是他们的 parent 类允许在事件处理期间覆盖。

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

非常感谢

最佳答案

获取字符数据并将其发送到 Base64 decoder .

关于java - 如何使用 SAX 解析器解析带有二进制数据元素的 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com