- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 DocumentBuilderFactory 解析 XML 文件,如下所示:
DocumentBuilderFactory ndsParserFactory = DocumentBuilderFactory.newInstance( );
ndsParserFactory.setNamespaceAware( true );
DocumentBuilder ndsParser = ndsParserFactory.newDocumentBuilder( );
Document ndsDocument = ndsParser.parse( ndsFileInputStream );
其中 ndsFileInputStream 是包装包含 XML 的文件的 InputStream。
当文件包含 Unicode 字符(例如 Δ)时,我收到异常。当我删除包含有问题的字符的行时,解析工作得很好。
该文件包含特征 <?xml version="1.0" encoding="utf-8"?>
header 。
我想知道我是否忽略了正确配置 DocumentBuilderFactory(或 DocumentBuilder)实例以处理 Δ 字符。
编辑(来自评论):
全面披露:这是 Android,我将 XML 文件(带有 NDS 文件扩展名)作为 Assets 包含在我的 Android 应用程序中。我通过 AssetManager 访问它们,它有一个方便的方法,可以将资源文件打开到 InputStream 中,然后将其传递给 DocumentBuilder 的解析方法。 –d 焊接 16 小时前
我注意到 Assets 文件夹的内容默认使用 CP1252 编码。所以我把它改成了UTF8。没有运气。然后我从 NDS 文件之一(每个链接)中删除了 BOM,并再次尝试。没有运气。我认为 APK 文件(像 ZIP 文件一样压缩)在某种程度上破坏了非 ASCII XML。我想我必须通过其他方式将 NDS 文件传输到 Android 设备上...
最佳答案
您确定该文件确实是用 UTF-8 编写的吗?显然,您可以在某些编辑器中打开它,它会正确显示文本,但它可能只是对编码进行了很好的猜测。
要记住的另一件事是所有字符都是 UTF-8 中的 Unicode - 当解析器遇到在声明的编码中无效的字节序列时,解析器就会感到窒息。 UTF-8 是一种非常宽容的编码,因为 7 位 ASCII 集中的任何字符都被编码为纯 ASCII,并且许多 XML 只由纯 ASCII 字符组成。当出现非 ASCII 的内容并且通过系统的文本编码路径中的缺陷突然变得明显时,这就会让人们陷入困境。
您可以尝试编辑 XML 声明,看看它在另一种字符编码下是否可以正常解析; 8859-7包含 Δ 符号 - 可以用它进行编码吗?
另外,什么是异常(exception)?
关于java - 将 XML 文件解析为 DOM 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692693/
我正在使用 node.js 和 mocha 单元测试,并且希望能够通过 npm 运行测试命令。当我在测试文件夹中运行 Mocha 测试时,测试运行成功。但是,当我运行 npm test 时,测试给出了
我的文本区域中有这些标签 ..... 我正在尝试使用 replaceAll() String 方法替换它们 text.replaceAll("", ""); text.replaceAll("", "
早上好,我是 ZXing 的新手,当我运行我的应用程序时出现以下错误: 异常Ljava/lang/NoClassDefFoundError;初始化 ICOM/google/zxing/client/a
我正在制作一些哈希函数。 它的源代码是... #include #include #include int m_hash(char *input, size_t in_length, char
我正在尝试使用 Spritekit 在 Swift 中编写游戏。目的是带着他的角色迎面而来的矩形逃跑。现在我在 SKPhysicsContactDelegate (didBegin ()) 方法中犯了
我正在尝试创建一个用于导入 CSV 文件的按钮,但出现此错误: actionPerformed(java.awt.event.ActionEvent) in cannot implement
请看下面的代码 public List getNames() { List names = new ArrayList(); try { createConnection(); Sta
我正在尝试添加一个事件以在“dealsArchive”表中创建一个条目,然后从“deals”表中删除该条目。它需要在特定时间执行。 这是我正在尝试使用的: DELIMITER $$ CREATE EV
我试图将两个存储过程的表结果存储到 phpmyadmin 例程窗口中的单个表中,这给了我 mariadb 语法错误。单独调用存储过程给出了结果。 存储过程代码 BEGIN CREATE TABLE t
我想在 videoview 中加载视频之前有一个进度条。但是我收到以下错误。我还添加了所有必要的导入。 我在 ANDROID 中使用 AIDE 这是我的代码 public class MainActi
我已经使用了 AsyncTask,但我不明白为什么在我的设备 (OS 4.0) 上测试时仍然出现错误。我的 apk 构建于 2.3.3 中。我想我把代码弄错了,但我不知道我的错误在哪里。任何人都请帮助
我在测试 friend 网站的安全性时,通过在 URL 末尾添加 ' 发现了 SQL 注入(inject)漏洞该网站是用zend框架构建的我遇到的问题是 MySQL -- 中的注释语法不起作用,因此页
我正在尝试使用堆栈溢出答案之一的交互式信息窗口。 链接如下: interactive infowindow 但是我在代码中使用 getMap() 时遇到错误。虽然我尝试使用 getMapAsync 但
当我编译以下代码时出现错误: The method addMouseListener(Player) is undefined for the type Player 代码: import java.
我是 Android 开发的初学者。我正在开发一个接收 MySql 数据然后将其保存在 SQLite 中的应用程序。 我将 Json 用于同步状态,以便我可以将未同步数据的数量显示为要同步的待处理数据
(这里是Hello world级别的自动化测试人员) 我正在尝试下载一个文件并将其重命名以便于查找。我收到一个错误....这是代码 @Test public void allDownload(
我只是在写另一个程序。并使用: while (cin) words.push_back(s); words是string的vector,s是string。 我的 RAM 使用量在 4 或 5
我是 AngularJS 的新手,我遇到了一个问题。我有一个带有提交按钮的页面,当我单击提交模式时必须打开并且来自 URL 的数据必须存在于模式中。现在,模式打开但它是空的并且没有从 URL 获取数据
我正在尝试读取一个文件(它可以包含任意数量的随机数字,但不会超过 500 个)并将其放入一个数组中。 稍后我将需要使用数组来做很多事情。 但到目前为止,这一小段代码给了我 no match for o
有些人在使用 make 命令进行编译时遇到了问题,所以我想我应该在这里尝试一下,我已经在以下操作系统的 ubuntu 32 位和挤压 64 位上尝试过 我克隆了 git 项目 https://gith
我是一名优秀的程序员,十分优秀!