An invalid XML character (Unicode: 0xc) was found

后端 未结 9 2023
傲寒
傲寒 2020-12-02 12:38

Parsing an XML file using the Java DOM parser results in:

[Fatal Error] os__flag_8c.xml:103:135: An invalid XML character (Unicode: 0xc) was found in the ele         


        
9条回答
  •  执笔经年
    2020-12-02 13:08

    You can filter all 'invalid' chars with a custom FilterReader class:

    public class InvalidXmlCharacterFilter extends FilterReader {
    
        protected InvalidXmlCharacterFilter(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 read;
    
            for (int i = off; i < off + read; i++) {
                if (!XMLChar.isValid(cbuf[i])) cbuf[i] = '?';
            }
            return read;
        }
    }
    

    And run it like this:

    InputStream fileStream = new FileInputStream(xmlFile);
    Reader reader = new BufferedReader(new InputStreamReader(fileStream, charset));
    InvalidXmlCharacterFilter filter = new InvalidXmlCharacterFilter(reader);
    InputSource is = new InputSource(filter);
    xmlReader.parse(is);
    

提交回复
热议问题