Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java/Android中读取XML中的unicode字符_Java_Android_Xml Parsing_Xml Serialization - Fatal编程技术网

在Java/Android中读取XML中的unicode字符

在Java/Android中读取XML中的unicode字符,java,android,xml-parsing,xml-serialization,Java,Android,Xml Parsing,Xml Serialization,我试图用一些Unicode字符获取XML输出。我无法读取标签中的完整字符串,但只能读取一个 这是我的XML输出 <item> <id>1</id> <name>&#x0DBD;&#x0DDC;&#x0DBD;&#x0DCA;</name> <cost>155</cost> <description>&#x0DBD;&am

我试图用一些Unicode字符获取XML输出。我无法读取标签中的完整字符串,但只能读取一个

这是我的XML输出

 <item>
    <id>1</id>    
    <name>&#x0DBD;&#x0DDC;&#x0DBD;&#x0DCA;</name>
    <cost>155</cost>
    <description>&#x0DBD;&#x0DDC;</description>
</item> 
当我使用普通英文字符时,它给出了完整的字符串

  • Unicode通常指的是UTF-8,但您使用的是UTF-16,即

  • XML在其内部定义了自己的编码,因此不需要重写它


我已经尝试了你的代码,没有问题。如果我使用非英语字符计算节点,则存在并具有正确的字符数。它们不可打印,因为我使用的字体中没有该字形,但
value.codePointAt(I)
返回正确的代码点

    NodeList list = doc.getDocumentElement().getChildNodes();
    for (int i=0; i<list.getLength(); i++)
    {
        String value = list.item(i).getTextContent();
        for (int j=0; j<value.length(); j++)
            System.out.print(" " + value.codePointAt(j));
        System.out.println();
    }
对应于代码点的十进制表示


我已经手工创建了xml字符串。您的内存中已经有了,对吗?

这是我用来解决问题的代码

   NodeList idlist = doc.getElementsByTagName(KEY_ID);
    NodeList namelist = doc.getElementsByTagName(KEY_NAME);
    NodeList costlist = doc.getElementsByTagName(KEY_COST);
    NodeList desclist = doc.getElementsByTagName(KEY_DESC);
    for (int i=0; i<idlist.getLength(); i++)
    {
        Item item = new Item();
        item.setCost(costlist.item(i).getTextContent());
        item.setDescription(desclist.item(i).getTextContent());
        item.setName(namelist.item(i).getTextContent());
        itemarray.add(item);

    }
NodeList idlist=doc.getElementsByTagName(KEY\u ID);
节点列表名称列表=doc.getElementsByTagName(键名称);
NodeList costlist=doc.getElementsByTagName(关键成本);
NodeList desclist=doc.getElementsByTagName(KEY\u DESC);

对于(int i=0;iI在其中思考,但事实上他试图从内存中的字符串读取,因此事实上,将字符编码设置到InputSource没有任何效果。而且它感觉到内存中的xml字符串没有任何编码头,因为它已经被解码。当你试图解析非英语字符时会发生什么?字符串不正确?或者它失败了?它没有失败。它只读取第一个字符。在本例中,它只输出ල;而不是ල;&ො;ල;්;哦,好的。但还有两件事:
containedtext.length的值()
返回1或4?,如果在解析之前打印xml,对吗?这对我很有帮助。但是使用这种方法,我无法逐个节点读取。我将把代码放在这里。非常感谢。
 49
 3517 3548 3517 3530
 49 53 53
 3517 3548
   NodeList idlist = doc.getElementsByTagName(KEY_ID);
    NodeList namelist = doc.getElementsByTagName(KEY_NAME);
    NodeList costlist = doc.getElementsByTagName(KEY_COST);
    NodeList desclist = doc.getElementsByTagName(KEY_DESC);
    for (int i=0; i<idlist.getLength(); i++)
    {
        Item item = new Item();
        item.setCost(costlist.item(i).getTextContent());
        item.setDescription(desclist.item(i).getTextContent());
        item.setName(namelist.item(i).getTextContent());
        itemarray.add(item);

    }