我有一个 XML,其中包含一些我试图解码的 XML 数据,但 XML 文件的底部有一些特殊字符,并且 其中包含我的一个问题并且抛出一个错误
**org.xml.sax.SAXParseException; systemId: Content is not allowed in trailing section.**
如果我尝试手动删除此字符,那么它对我来说效果很好。
但我的问题是如何使用运行时从文件中删除该特殊字符。
我尝试了以下方式
JAXBContext jaxbContext = JAXBContext.newInstance(VariablePack.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
InputStream is1= new FileInputStream("C:\\temp\\temop4.xml");
Reader reader = new InputStreamReader(is1);
SomeJavaClass someJavaClass = (SomeJavaClass) jaxbUnmarshaller.unmarshal(reader);
示例XML文件数据底部有一个特殊字符
<?xml version="1.0" encoding="UTF-16" standalone="no" ?>
<NewStudioVariablePack>
<projectName>ContextView_NG</projectName>
<threadID>100015</threadID>
<gSYSInstance>8</gSYSInstance>
<variablesList>
<contextVariables>
<variable>
<variableName>C.UserXML</variableName>
<variableType>B</variableType>
<variablePicture/>
<blobType/>
<value/>
</variable>
<variable>
<variableName>C.sys.RemoteUser</variableName>
<variableType>A</variableType>
<variablePicture>30</variablePicture>
<blobType/>
<value/>
</variable>
</contextVariables>
</variablesList>
</NewStudioVariablePack>
最佳答案
您可以尝试使用普通的 BufferedReader 逐行读取文件并跳过最后一行,但不建议解析 XML。只是为了看看你是否能用这种方式读出那个字符。
这个角色是如何到达那里的?也许您使用了错误的编码。
否则在解析代码周围设置一个 try/catch block ,这样至少不会崩溃。
关于java - 使用 UTF-16 内容解码 xml 如何从 xml 文件底部删除特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56863286/