gpt4 book ai didi

java - 使用 Java 在具有十六进制零的文件中获取 XML 和编码数据

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

我必须读取一个包含 XML 文档和编码数据的文件(现有格式不受我控制)。不幸的是,该文件包含与 MQ 相关的数据,包括十六进制零(文件结尾)。

那么,使用 Java,我如何读取这个文件,剥离或忽略我不需要获取 XML 和编码数据的“垃圾”。我认为一个可接受的解决方案是省略十六进制零(是否有其他值会停止我的阅读?),因为我不需要 MQ 信息(RFH header ),并且计数对我的目的毫无意义。

我搜索了很多,只找到了非常复杂的“解决方案”。一定有更好的方法……

最佳答案

有效的是提取 XML 文档 - Groovy 代码:

    public static final String REQUEST_XML          = "<Request>";
public static final String REQUEST_END_XML = "</Request>";
/**
* @param xmlMessage
* @return 1-N EncodedRequests for those I contain
*/
private void extractRequests( String xmlMessage ) {
int start = xmlMessage.indexOf(REQUEST_XML);
int end = xmlMessage.indexOf(REQUEST_END_XML);
end += REQUEST_END_XML.length();
while( start >= 0 ) { //each <Request>
requests.add(new EncodedRequest(xmlMessage.substring(start,end)));
start = xmlMessage.indexOf(REQUEST_XML, end);
end = xmlMessage.indexOf(REQUEST_END_XML, start);
end += REQUEST_END_XML.length();
}
}

然后解码base64部分:

    public String getDecodedContents() {
if( decodedContents == null ) {
byte[] decoded = Base64.decodeBase64(getEncodedContents().getBytes());
String newString = new String(decoded);
decodedContents = newString;
decodedContents = decodedContents.replace('\r','\t');
}
return decodedContents;
}

关于java - 使用 Java 在具有十六进制零的文件中获取 XML 和编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948109/

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