gpt4 book ai didi

java - org.XML.sax.SAXParseException : Unexpected token (position:TEXT @1:2 in java. io.StringReader@959e0aa)

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:22 25 4
gpt4 key购买 nike

我目前是一家公司的实习生,他们要求我为他们提供的服务创建一个 Android 应用程序,为了使该应用程序正常工作,我需要读取一个可通过soaprequest 获取的设置文件。

我已经将类似的文件与其他数据一起使用过,并且遇到了一些问题,但这些问题很容易解决,但是这个问题在过去几个小时里一直困扰着我。

我收到此错误:

03-18 10:57:30.775 12815-12815/com.example.stagiair.testomgeving W/System.err: org.xml.sax.SAXParseException: Unexpected token (position:TEXT @1:2 in java.io.StringReader@959e0aa) 
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:146)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at com.example.stagiair.testomgeving.DomParser.buildDomDocument(DomParser.java:42)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at com.example.stagiair.testomgeving.dbTest$1.resultReady(dbTest.java:36)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at com.example.stagiair.testomgeving.HttpReader.onPostExecute(HttpReader.java:76)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at com.example.stagiair.testomgeving.HttpReader.onPostExecute(HttpReader.java:17)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:651)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at android.os.AsyncTask.-wrap1(AsyncTask.java)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at android.os.Looper.loop(Looper.java:148)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at java.lang.reflect.Method.invoke(Native Method)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
03-18 10:57:30.776 12815-12815/com.example.stagiair.testomgeving W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我知道这个问题已经被问过很多次了,但所提供的答案似乎都不适合我。我花了过去两个小时寻找解决方案,但没有任何进展。

我可以提供 XML 结构,但不能提供整个 XML,因为它包含我不应该直接扔到互联网上的数据。

XML:该 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns="">
<WebServerResponse>
<Settings>
<KantoorUren>
</KantoorUren>
<PersoneelData>
<Persoon></Persoon>
</PersoneelData>
<MaterieelData>
<Materieel></Materieel>
</MaterieelData>
<HulpMaterieelData>
<HulpMaterieel></HulpMaterieel>
</HulpMaterieelData>
<AftekenDiensten>
<Dienst></Dienst>
</AftekenDiensten>
<Statussen>
<Status></Status>
</Statussen>
</Settings>
</WebServerResponse>
</soap:Body>
</soap:Envelope>

编辑:哦我忘了..这是解析器代码

     public void buildDomDocument (String newXml){
String xml = newXml.replaceAll(">\\s+<", "><").trim();

DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder db = dbf.newDocumentBuilder();

InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);

} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
}
}

编辑:我已经将这个解析器与一个 xml 一起使用并且它有效,我将提供这两个 XML 文件,以便您可以发现任何差异。

工作 XML:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns="">
<WebServerResponse>
<Personeel>
<PersonDetails>
<Person>Ron Weasley</Person>
<Mannummer>6</Mannummer>
<NaamKort>Ron W</NaamKort>
<Adres>Steenweg 2</Adres>
<Woonplaats>WUUSTWEZEL</Woonplaats>
<PostKode>3320 LL</PostKode>
<Telefoon>04-94885522</Telefoon>
<Uitwijktel></Uitwijktel>
<Afdeling>0</Afdeling>
<Email>wrwiz@gmail.com</Email>
</PersonDetails>
<BezettingPersoneel>
<BezettingPersoneelDetail>
<Datum>20160301</Datum>
<Mannummer>6</Mannummer>
<Omschrijving></Omschrijving>
<Naam>Ron W</Naam>
<Vertrektijd>7.30</Vertrektijd>
<Aankomsttijd>16.30</Aankomsttijd>
<Eindopdracht>16.00</Eindopdracht>
<Contactuur>8.00</Contactuur>
<Voorman>1</Voorman>
<AfwVanUur>0.00</AfwVanUur>
<AfwTotUur>0.00</AfwTotUur>
<Act1VanUur>0.00</Act1VanUur>
<Act1TotUur>0.00</Act1TotUur>
<Act2VanUur>0.00</Act2VanUur>
<Act2TotUur>0.00</Act2TotUur>
<Act1PauzeV>0.00</Act1PauzeV>
<Act1PauzeT>0.00</Act1PauzeT>
<Act2PauzeV>0.00</Act2PauzeV>
<Act2PauzeT>0.00</Act2PauzeT>
<AgendaLijn>
<RlNummer>21306</RlNummer>
<Opname-nr>1</Opname-nr>
<AgendaSeq>2</AgendaSeq>
<ContactTijd> `0 080000</ContactTijd>
<ContactDatum>20160301</ContactDatum>
<ContactUur>80000</ContactUur>
<ContactDuur>8.00</ContactDuur>
<MatAantal>2</MatAantal>
<PersAantal>3</PersAantal>
<Actie>26</Actie>
<ContactOms>Move box to second floor</ContactOms>
<Vertrektijd>7.30</Vertrektijd>
<AankomstTijd>16.30</AankomstTijd>
<Eindopdracht>16.00</Eindopdracht>
<MaxDatum>0</MaxDatum>
<OpnameDossier>
<DossierNr>1160067</DossierNr>
<RlNummer>21306</RlNummer>
<OpnameNr>1</OpnameNr>
<PerDatum1>20160301</PerDatum1>
<PerDatum2>0</PerDatum2>
<VolGeschat>35.000</VolGeschat>
<VolEenheid>9</VolEenheid>
<TotAfstand>0.000</TotAfstand>
<TotColli>0.00</TotColli>
<TotBrutoKg>0.00</TotBrutoKg>
<TotNettoKg>0.00</TotNettoKg>
<TotTarraKg>0.00</TotTarraKg>
<TotBrutoLb>0.00</TotBrutoLb>
<TotNettoLb>0.00</TotNettoLb>
<TotTarraLb>0.00</TotTarraLb>
<TotVolCbm>0.000</TotVolCbm>
<TotVolCft>0.000</TotVolCft>
<TotVolGew>0.000</TotVolGew>
<Beheerder>76</Beheerder>
<Zoeknaam>NORTHMAN</Zoeknaam>
<DebiteurNr>25669</DebiteurNr>
<SrtVerhuis>1</SrtVerhuis>
<Goederen></Goederen>
</OpnameDossier>
<AdressenPerAgenda>
<AdresDetail>
<Rlnummer>21306</Rlnummer>
<OpnameNr>1</OpnameNr>
<AdresSeq>2</AdresSeq>
<typeVAdres>9</typeVAdres>
<Naam1>Mister H. Clint</Naam1>
<Naam2></Naam2>
<Naam3></Naam3>
<BezoekAdres1>Henkseweg 44</BezoekAdres1>
<BezoekAdres2></BezoekAdres2>
<BezoekAdres3></BezoekAdres3>
<PostCodeBez>2260 EK</PostCodeBez>
<BezoekPlaats>RUURGEM</BezoekPlaats>
<Land>0</Land>
<Taal>0</Taal>
<Transporteur>0</Transporteur>
<ChauffeurNr>0</ChauffeurNr>
<ChauffeurVr></ChauffeurVr>
<KentekenNr>0</KentekenNr>
<KentekenVr></KentekenVr>
<ChassisNr>0</ChassisNr>
<ChassisVr></ChassisVr>
<VmedNummer></VmedNummer>
<VmedType>0</VmedType>
<VmedStatus>0</VmedStatus>
<Seal></Seal>
<BoekingsRef></BoekingsRef>
<GevrDatum>0</GevrDatum>
<GevrUur>0.00</GevrUur>
<GeplDatum>0</GeplDatum>
<GeplUur>0.00</GeplUur>
<WerkDatum>0</WerkDatum>
<WerkUur>0.00</WerkUur>
<WerkDuur>0.00</WerkDuur>
<Country>NL</Country>
<Language></Language>
</AdresDetail>
</AdressenPerAgenda>
</AgendaLijn>
</BezettingPersoneelDetail>
</BezettingPersoneel>
</Personeel>
</WebServerResponse>
</soap:Body>
</soap:Envelope>

失败的 XML:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns="">
<WebServerResponse>
<Settings>
<KantoorUren>
<AM_FROM>06:00</AM_FROM>
<AM_TILL>12:00</AM_TILL>
<PM_FROM>13:00</PM_FROM>
<PM_TILL>20:00</PM_TILL>
</KantoorUren>
<PersoneelData>
<Persoon>
<Person>Frank Jackson</Person>
<Mannummer>235</Mannummer>
<NaamKort>Frank J</NaamKort>
<Naam>Frank Jackson</Naam>
<Adres></Adres>
<Woonplaats></Woonplaats>
<PostKode></PostKode>
<Telefoon></Telefoon>
<Uitwijktel></Uitwijktel>
<Email></Email>
</Persoon>
</PersoneelData>
<MaterieelData>
<Materieel>
<Materieelnr>22</Materieelnr>
<Kenteken>GHP-235</Kenteken>
<Omschrijving>Truck</Omschrijving>
</Materieel>
</MaterieelData>
<HulpMaterieelData>
<HulpMaterieel>
<Code>Cart. Box</Code>
<Omschrijving>Cartboard Box</Omschrijving>
<Volgnummer>2</Volgnummer>
</HulpMaterieel>
</HulpMaterieelData>
<AftekenDiensten>
<Dienst>
<Code>101</Code>
<Omschrijving>Retreived necklace</Omschrijving>
</Dienst>
</AftekenDiensten>
<Statussen>
<Status>
<Volgorde>1</Volgorde>
<Code>12</Code>
<HoofdStatus>Stop</HoofdStatus>
<SubStatus></SubStatus>
<Omschrijving>Stop</Omschrijving>
<LetterCode>S</LetterCode>
<Kleurcode>22</Kleurcode>
</Status>
</Statussen>
</Settings>
</WebServerResponse>
</soap:Body>
</soap:Envelope>

我希望有人能帮助我。

提前致谢。

最佳答案

我将解析器代码更改为:

     public void buildDomDocument (String newXml){
String xml = newXml.replaceAll(">\\s+<", "><").trim();
Log.e("XML: ", xml);
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder db = dbf.newDocumentBuilder();
byte[] bytes = Charset.forName("UTF-8").encode(xml).array();
InputStream is = new ByteArrayInputStream(bytes);

} catch (ParserConfigurationException e) {
Log.e("Error: ", e.getMessage());
} catch (SAXException e) {
Log.e("Error: ", e.getMessage());
} catch (IOException e) {
Log.e("Error: ", e.getMessage());
}
}

显然,或者至少我从中得到的是,UTF-8 编码在该过程中的某个地方出错了,而其他 XML 文件上没有出错,但使用此代码解决了这个问题。

现在可以了。

如果有人可以澄清这是如何发生的或者它到底做了什么,请随意这样做。

关于java - org.XML.sax.SAXParseException : Unexpected token (position:TEXT @1:2 in java. io.StringReader@959e0aa),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com