SAXParseException: Element-Typ "CountryNamecode" werden muss, gefolgt von Attribut-Spezifikationen, ">" oder "/>"

OK, das scheint eine häufige Fehlermeldung, aber ich habe diese von ein paar Winkel, und ich bin ratlos.

Meine XML (komplette Datei ist riesig, so dass die Beschränkung auf Gebiet, das scheint im Zusammenhang, es sei denn, jemand kann mir sagen wie/warum, ich brauche mehr hier):

<?xml version="1.0" encoding="utf-8"?>
<MyXML date="201112102200" type="daily">
    <CountryList>
        <CountryName code="AARCT" name="Antarctica" IsTerritory="True"/>
        <CountryName code="ABKHAZ" name="Abkhazia" IsTerritory="True"/>

        <!-- ... -->

        <CountryName code="VCAN" name="Vatican City" IsTerritory="False" ProfileURL="vatican city.doc"/>
        <CountryName code="VEN" name="Venezuela" IsTerritory="False" ProfileURL="venezuela.doc"/>
        <CountryName code="VI" name="US Virgin Islands" IsTerritory="True"/>
        <CountryName code="VIETN" name="Vietnam" IsTerritory="False" ProfileURL="vietnam.doc"/>
        <CountryName code="WALLIS" name="Wallis and Futuna Islands" IsTerritory="True"/>
        <CountryName code="WSOMOA" name="Samoa" IsTerritory="False" ProfileURL="samoa.doc"/>
        <CountryName code="YEMAR" name="Yemen" IsTerritory="False" ProfileURL="yemen.doc"/>
        <CountryName code="YUG" name="Serbia" IsTerritory="False" ProfileURL="serbia.doc"/>
        <CountryName code="ZAIRE" name="Democratic Republic of the Congo" IsTerritory="False" ProfileURL="democratic republic of the congo.doc"/>
        <CountryName code="ZAMBIA" name="Zambia" IsTerritory="False" ProfileURL="zambia.doc"/>
        <CountryName code="ZIMBAB" name="Zimbabwe" IsTerritory="False" ProfileURL="zimbabwe.doc"/>
    </CountryList>

    <!-- ... -->

</MyXML>

Also der Fehler ist:

org.xml.sax.SAXParseException: Element type "CountryNamecode" must be followed by either attribute specifications, ">" or "/>".
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
    at com.foo.bar.Baz.<init>(Baz.java:38)
    at com.foo.bar.BazTest.testRecordCounts(BazTest.java:69)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Der Anmeldung habe ich angegeben, andernfalls nach country-code "VI", und, dass es etwas falsch mit dem "VIETN" - Eintrag.

Also, es scheint nicht zu sein, ein fehlerhaftes element namens "CountryNamecode", ich habe für Zwielichtige Charaktere, aber es ist alles ziemlich Vanille Charakter-klug. Die gesamte Datei überprüft, wenn ich überprüft es, mit STS -, Sauerstoff -, und xmllint.

Jede Hilfe auf diesem würde sehr geschätzt werden.

Cheers folks!

EDIT:

XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(this);
xmlReader.setErrorHandler(this);
xmlReader.parse(new InputSource(new StringReader(retriever.getContent())));

Den retriever-Objekt ist die Rückgabe der xml-string, und anders als das, ich bin in der Analyse einer InputSource, übergeben Sie den StringReader. Es sei denn, es ist etwas, offensichtlich fehlt mir

Klingt nach einem fehlenden Raum zwischen CountryName und die code - Attribut in der xml-Quelle.
War etwas mehr versteckt, als, dass, es war die Lesung der string aus der Quell-Datei (wie in der Antwort unten), aber cheers für die Anregung, Sie waren Art-von rechts!

InformationsquelleAutor theZenPebble | 2012-02-27

Schreibe einen Kommentar