【发布时间】:2013-04-24 19:52:04
【问题描述】:
我有一个包含数千个标签的 XML 文件来读取它们的文本内容,如下面的屏幕截图所示:
我正在尝试使用此代码读取所有“单词”标签的文本内容:
String filePath = "...";
File xmlFile = new File( filePath );
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document domObject = db.parse( xmlFile );
domObject.getDocumentElement().normalize();
NodeList categoryNodes = domObject.getElementsByTagName( "category" ); // Get all the <category> nodes.
for (int s = 0; s < categoryNodes.getLength(); s++) { //Loop on the <category> nodes.
String categoryName = categoryNodes.item(s).getAttributes().getNamedItem( "name" ).getNodeValue();
if( selectedCategoryName.equals( categoryName ) ) { //get its words.
NodeList wordsNodes = categoryNodes.item(s).getChildNodes();
for( int i = 0; i < wordsNodes.getLength(); i++ ) {
if( wordsNodes.item( i ).getNodeType() != Node.ELEMENT_NODE ) continue;
String word = wordsNodes.item( i ).getTextContent();
categoryWordsList.add( word ); // Some words are read wrong !!
}
break;
}
}
但由于某种原因,许多单词被错误地阅读,示例:
"AMK6780KBU" is read as "9826</word"
"ASSI.ABR30326" is read as "rd>ASSI.AEP26"
"ASSI.25066" is read as "SI.4268</6"
可能是因为文件太大。如果我只是在 XML 文件中添加一些空行或删除一些空行,其他单词会比上面提到的读错,这很奇怪!
您可以从here 下载 XML 文件。
【问题讨论】:
-
header说文件是UTF-8的,真的是这样吗?
-
是的,有问题吗?
-
我用 Firefox 打开了 XML,它抱怨 XML 声明格式不正确。它抱怨
1.1版本。也许您的解析器对 1.1 XML 文件也有问题? -
andyb .. 我已经用新的 pastebin 链接更新了帖子,这里是 XML 链接:pastebin.com/embed_js.php?i=7rafYLDm
-
适用于 jdk 1.7 并在 windows 7 上捆绑 xerces。您是否尝试过使用最新的 Xerces-J 2.11.0?