Ticket #3290: Test.java

File Test.java, 2.0 KB (added by Don-vip, 11 years ago)

Program demonstrating bug with default XML parser

Line 
1import java.io.FileInputStream;
2import java.io.InputStreamReader;
3import java.util.Arrays;
4import java.util.HashMap;
5import java.util.Map;
6
7import javax.xml.stream.XMLInputFactory;
8import javax.xml.stream.XMLStreamConstants;
9import javax.xml.stream.XMLStreamReader;
10
11public class Test {
12
13 public static void main(String[] args) {
14
15 Map<String, String> map = new HashMap<String, String>();
16
17 try {
18 InputStreamReader ir = new InputStreamReader(new FileInputStream("D:\\Users\\Vincent\\Desktop\\JOSM_work\\gottic.osm"), "UTF-8");
19 XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(ir);
20
21 int event = parser.getEventType();
22 while (true) {
23 if (event == XMLStreamConstants.START_ELEMENT) {
24 String key = parser.getAttributeValue(null, "k");
25 String value = parser.getAttributeValue(null, "v");
26 if (key != null && value != null) {
27 map.put(key.intern(), value.intern());
28 }
29 }
30 if (parser.hasNext()) {
31 event = parser.next();
32 } else {
33 break;
34 }
35 }
36 parser.close();
37
38 String value = map.get("name:ch");
39 System.out.println("From XML chinese:" + Arrays.toString(value.getBytes("UTF-8")));
40
41 value = new String(Character.toChars(0x24B62));
42 System.out.println("Expected chinese:" + Arrays.toString(value.getBytes("UTF-8")));
43
44 value = map.get("name:got");
45 System.out.println("From XML gothic:" + Arrays.toString(value.getBytes("UTF-8")));
46
47 value = new String(Character.toChars(0x10330));
48 System.out.println("Expected gothic:" + Arrays.toString(value.getBytes("UTF-8")));
49
50 } catch (Exception e) {
51 e.printStackTrace();
52 }
53 }
54}