小编oli*_*ood的帖子

Unmarshall期间无效的XML字符

我使用编码"UTF-8"将对象编组到XML文件.它成功生成文件.但是当我试图将其解组时,会出现错误:

在属性"{1}"的值中找到无效的XML字符(Unicode:0x {2}),元素为"0"

字符为0x1A或\ u001a,在UTF-8中有效,但在XML中是非法的.JAXB中的Marshaller允许将此字符写入XML文件,但Unmarshaller无法解析它.我试图使用另一种编码(UTF-16,ASCII等),但仍然是错误.

常见的解决方案是在XML解析之前删除/替换此无效字符.但是,如果我们需要这个角色,如何在解组之后获得原始角色?


在寻找此解决方案时,我想在解组之前用替换字符(例如dot =".")替换无效字符.

我创建了这个类:

public class InvalidXMLCharacterFilterReader extends FilterReader {

    public static final char substitute = '.'; 

    public InvalidXMLCharacterFilterReader(Reader in) {
        super(in);
    }

    @Override
    public int read(char[] cbuf, int off, int len) throws IOException {

        int read = super.read(cbuf, off, len);

        if (read == -1)
            return -1;

        for (int readPos = off; readPos < off + read; readPos++) {
            if(!isValid(cbuf[readPos])) {
                   cbuf[readPos] = substitute;
            }
        }

        return readPos - off + 1; 
    }

    public boolean …
Run Code Online (Sandbox Code Playgroud)

java jaxb xml-serialization unmarshalling

10
推荐指数
1
解决办法
2万
查看次数

使用VB 6代码从任务管理器结束进程

我需要大致杀死一个应用程序,这样我就可以在我的数据库中获得该应用程序的幻像订阅者(这不能通过关闭应用程序来生成).手动,如果我们从任务管理器中删除应用程序,幻像用户将存在.现在我需要在VB 6代码中自动完成.救命!谢谢.

vb6 taskmanager kill-process

4
推荐指数
2
解决办法
5万
查看次数