2011-06-05 64 views
0

我解析这个XML文件:的XPath产生混乱的输出,而不是Unicode字符

<?xml version="1.0" encoding="UTF-8"?> 

<tests> 
    <test category="Русский"/> 
    <test category="ελληνικά"/> 
    <test category="中文"/> 
    <test category="English"/> 
</tests> 

主类是:

import java.io.File; 
import java.io.FileInputStream; 
import javax.xml.xpath.XPath; 
import javax.xml.xpath.XPathConstants; 
import javax.xml.xpath.XPathExpression; 
import javax.xml.xpath.XPathFactory; 
import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 

public class TestUnicode { 
    public static void main(String[] args) throws Exception { 
     XPath xpath = XPathFactory.newInstance().newXPath(); 
     XPathExpression lolwhy = xpath.compile("//test"); 
     final InputSource inputSource = 
       new InputSource(
       new FileInputStream(
       new File("sample.xml"))); 
     NodeList parent = (NodeList) lolwhy.evaluate(
       inputSource, 
       XPathConstants.NODESET); 
     System.out.println(parent.getLength()); 
     for (int i = 0; i < parent.getLength(); i++) { 
      System.out.println(parent.item(i).getAttributes(). 
        getNamedItem("category").getNodeValue()); 
     } 
    } 
} 

,输出是:

 
4 
??????? 
???????? 
?? 
English 

什么时我在这里做错了吗?

编辑:没关系,这个问题涉及到hebrew appears as question marks in netbeans和解决方案是这样的:Setting the default Java character encoding?

+0

您的Java控制台不明白发送给它的文本的编码。尝试将输出写入文本文件并阅读。 – 2011-06-05 13:50:43

回答

0

可能是因为分析是好的,但输出是错误的。

如果您使用的字体不包含这些字符,或者如果您将值输出为HTML,但指定了错误的编码,则可能是结果。

字体问题更可能是一个。

+0

是的,Netbeans似乎是某种控制台输出问题,但有趣的是 - 无论使用什么字体,它似乎都会打印垃圾。 – Zotov 2011-06-05 14:59:05