java - 使用 UTF-16 内容解码 xml 如何从 xml 文件底部删除特殊字符

标签 java unicode xml-parsing unmarshalling utf-16

我有一个 XML,其中包含一些我试图解码的 XML 数据,但 XML 文件的底部有一些特殊字符,并且 其中包含我的一个问题并且抛出一个错误

**org.xml.sax.SAXParseException; systemId: Content is not allowed in trailing section.**

如果我尝试手动删除此字符,那么它对我来说效果很好。

但我的问题是如何使用运行时从文件中删除该特殊字符

我尝试了以下方式

enter image description here

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/

相关文章:

java - 在 Java 中处理 XML 的更好方法

java - 计算音乐搜索栏的轨道位置

java - Hibernate:选择对象关系映射?

ios - NSString大小不考虑希腊呼吸痕

java - 无法获取Childnode的Name属性

java - 使用什么: JPQL or Criteria API?

python - 返回 Unicode 字符串与返回编码为 UTF-8 的普通字符串?

java - 推荐的字体)用于显示 unicode 字符?

java - 我可以在 Java 中使用验证性较低的 StAX 解析器吗?

c# - 读取 XML(来自字符串)并获取一些字段 - Problems reading XML