2011-06-05 89 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