XML Sax 解析器未按预期进行解析。 XML-文件看起来不错

XML Sax parser doesn't parse as supposed. XML-file seems fine

我的 sax 解析器对于其他 xml 文件工作正常,但是对于这个文件它不起作用。 Before formatting and after xml file formatted

我找不到 XML 代码中的错误,有些在线验证器说没问题,有些则不行。

我在 startElement method() 中打印了一张,它只写

 @Override
public void startElement(String uri, String localName, String qName, Attributes attribute) {
    elementOn = true;
    sb.delete(0, sb.length());
    if (localName.equals("Part")) {
        journey.add(sb.toString())
    ...
    }


03-03 11:50:04.165    3165-3184/se.xxx.x.app E/start﹕ [ 03-03 11:50:04.165  3165: 3184 E/start    ]
03-03 11:50:04.165    3165-3184/se.xxx.x.app E/start﹕ [ 03-03 11:50:04.165  3165: 3184 E/start    ]
03-03 11:50:04.165    3165-3184/se.xxx.x.app E/start﹕ [ 03-03 11:50:04.165  3165: 3184 E/start    ]

我还在 endElement method 中打印了一张,上面写着:

03-03 12:11:17.114    3257-3276/se.x.x.app E/endElement﹕ <Part><From><Id>80129</Id><Poi>A</Poi><PoiAlias>A</PoiAlias><Name>Malmö Ellstorp</Name><X>6167351.00</X><Y>1324920.00</Y></From><To><Id>80110</Id><Poi>G</Poi><PoiAlias>G</PoiAlias><Name>Malmö Värnhem</Name><X>6167569.00</X><Y>1324648.00</Y></To><Line><Name>3</Name><No>3</No><LinTName>Stadsbuss</LinTName></Line><Coords><Coord><X>6167348.97</X><Y>1324918.92</Y></Coord><Coord><X>6167395.11</X><Y>1324877.70</Y></Coord><Coord><X>6167407.62</X><Y>1324865.61</Y></Coord><Coord><X>6167422.52</X><Y>1324852.10</Y></Coord><Coord><X>6167444.33</X><Y>1324832.65</Y></Coord><Coord><X>6167467.42</X><Y>1324811.56</Y></Coord><Coord><X>6167484.12</X><Y>1324795.79</Y></Coord><Coord><X>6167496.59</X><Y>1324782.39</Y></Coord><Coord><X>6167521.95</X><Y>1324757.39</Y></Coord><Coord><X>6167530.16</X><Y>1324749.31</Y></Coord><Coord><X>6167536.06</X><Y>1324742.80</Y></Coord><Coord><X>6167528.65</X><Y>1324734.64</Y></Coord><Coord><X>6167518.76</X><Y>1324727.43</Y></Coord><Coord><X>6167508.90</X><Y>1324719.42</Y></Coord><Coord><X>6167513.49</X><Y>1324710.15</Y></Coord><Coord><X>6167563.87</X><Y>1324644.56</Y></Coord></Coords></Part>

这是整个 "Part" 块,它没有找到其中的每个元素。

完整 xml 解析器(如有必要)full handler class

编辑:这是我使用的原始数据:XML URL 编辑:如果我将我的 xml 从 Chrome 复制并传递到一个字符串中并从那里解析它,它就可以正常工作。

            URL url = new URL(params[0]);
            xmlR.parse(new InputSource(url.openStream())); //Does not work
            --------
            InputSource stream = new InputSource(new StringReader(xml));// Works if I go to that URL in Chrome and copy the xml into the String xml.

您的文件包含字符串 "Malmö",其中包含非 ASCII 字符。这强烈指向编码问题。没有 XML 声明来指定文件的编码,因此解析器可能会猜测它是用 UTF-8 编码的。如果这个假设被证明是错误的,解析很可能会失败。

您不仅需要查看此字符串的编码方式,还需要查看数据在离开磁盘和到达 XML 解析器之间发生了什么。在那段短途旅行中有很多方法可以丢失编码信息。