嘿,我试图使用VTD-XML来解析给它作为一个字符串的XML,但我找不到如何做到这一点。任何帮助,将不胜感激。VTD-XML可以将字符串作为输入吗?
http://vtd-xml.sourceforge.net
嘿,我试图使用VTD-XML来解析给它作为一个字符串的XML,但我找不到如何做到这一点。任何帮助,将不胜感激。VTD-XML可以将字符串作为输入吗?
http://vtd-xml.sourceforge.net
看来VTD-XML库让你读字节数组数据。我建议在这种情况下,使用正确的编码将字符串转换为字节。
如果有在XML字符串的开头信号的编码:
<?xml version="1.0" encoding="UTF-8"?>
然后使用:
myString.getBytes("UTF-8")
如果有没有编码,请使用之一,VTD-XML知道如何解码字节:
String withHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + myString;
byte[] bytes = withHeader.getBytes("UTF-8");
VTDGen vg = new VTDGen();
vg.setDoc(bytes);
vg.parse(true);
注意的是,在后一种情况下,你可以使用任何有效的编码,因为日你在内存中使用的字符串是encoding-agnosting(它是UTF-16,但是当你要求它将被转换的字节时)。
VTD-XML不接受字符串,因为字符串意味着UCS-16编码,这意味着它不是一个真正的xml文档。根据规范定义,xml通常以utf-8,ascii,iso -8859-1或UTF-16LE或BE格式...我的回答有意义吗?
不是真的...您在...?>标头中定义xml文件的编码。并且一个字符串在UCS-16中以内存编码,但您可以将其转换为匹配所需的编码。 – helios 2010-02-24 00:06:25
如果通过字符串你的意思是java的字符串对象,那么我支持我的答案...如果字符串你的意思是一个字节数组,那么你是正确的使用 ?>决定编码...我觉得这个问题是真的关于问关于Java的字符串对象,但我可能是错的 – 2010-02-24 03:49:25
你的回答是否有意义?不可以。根据helios的回答,这个字符串可能包含一个声明编码的序言。因此,要将字符串转换为适合解析器使用的字节,您必须首先提取该编码,正如helios所说。但通常,解析器的工作是确定编码。我经常使用的所有解析器都可以接受Reader作为输入,这意味着解析器可以忽略编码问题,因为它已经获取了字符。因此,如果VTD-XML没有解析Reader的方法,那么它就不是“先进和强大的”。 – 2010-02-25 20:49:46
我是vtd-xml的作者,我们支持我们在这方面的声明...有很多人已经测试了vtd-xml,并且对它印象深刻......所以我对你的建议是不要让任何关于你不知道的任何过早陈述..我很乐意向你介绍vtd-xml是什么......谢谢! – 2010-02-23 20:00:41