Есть ли способ избежать обработки escape-строк в XML во время анализа XML - PullRequest
0 голосов
/ 19 февраля 2019

У нас есть приложение, которое получает XML-ответы от внешнего приложения.Для одного из ответов мы столкнулись с проблемой. Мы можем получить несколько ответов одновременно.

  1. Сначала мы анализируем все ответы Jsoup.parse (xml, "", Parser.xmlParser ()); .Для разделения ответов.
  2. Полученный объект документа теперь содержит несколько элементов, каждый из которых содержит один ответ.
  3. Теперь мы перебираем каждый элемент и анализируем его, используя SAXParser.

Для описанной выше реализации, когда xml-ответ содержит escape-строки, они обрабатываются на первом шаге, а при синтаксическом анализе на третьем шаге я получаю следующее исключение, поскольку escape-строки уже обработаны и замененыс фактическими строками ("<" и ">").

Могу ли я узнать, есть ли способ избежать обработки этих escape-строк на 1-м шаге. Это может быть проблемой проектирования, но будетХотелось бы узнать, есть ли какие-нибудь альтернативы, которые я могу попробовать, не меняя большую часть реализации.

[2019/02/14-01:41:04.293] org.xml.sax.SAXParseException; lineNumber: 230; columnNumber: 788; The value of attribute "c168" associated with an element type "r1" must not contain the '<' character.
[2019/02/14-01:41:04.294]     at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
[2019/02/14-01:41:04.294]     at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
[2019/02/14-01:41:04.294]     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
[2019/02/14-01:41:04.294]     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
[2019/02/14-01:41:04.294]     at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
[2019/02/14-01:41:04.294]     at org.apache.xerces.impl.XMLScanner.scanAttributeValue(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanAttribute(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
[2019/02/14-01:41:04.295]     at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)

> <r1 c1=\"Test\" c2=\"Test\" c5=\"Test\" c6=\"Test\" c7=\"Test\"
> c8=\"Test\" c9=\"sputta\" c11=\"1\" c12=\"N\" c15=\"Test\" c18=\"0\"
> c20=\"0\" c24=\"0\" c26=\"0\" c28=\"M\" c31=\"Test\" c32=\"0\"
> c35=\"959\" c36=\"Test\" c37=\"N\" c40=\"5538.225\" c41=\"Test\"
> c42=\"1\" c59=\"N\" c74=\"Test\" c90=\"0\" c92=\"0\" c93=\"0\"
> c95=\"0\" c97=\"T02\" c102=\"N\" c103=\"G599\" c104=\"N\"
> c106=\"TEST\" c107=\"1\" c108=\"10\" c112=\"Test\" c114=\"Test\"
> c116=\"577.5\" c117=\"0\" c118=\"1\" c119=\"N\" c122=\"Tewst\"
> c123=\"Test\" c125=\"N\" c131=\"20190214060704005\"
> c132=\"20190214010704005\" c133=\"-05:00:00\" c134=\"87639\"
> c135=\"sputta\" c136=\"N\" c138=\"Test\" c140=\"20190214000000000\"
> c149=\"1\" c150=\"O258265\" c152=\"N\" c153=\"1\" c156=\"959\"
> c158=\"5538.225\" c160=\"1\" c164=\"100\" c167=\"577.5\"
> c168=\"&lt;A_PNDUPD&gt;&lt;Updates A_QTY=&quot;959&quot;
> /&gt;&lt;Current A_QTY=&quot;100&quot; /&gt;&lt;/A_PNDUPD&gt;\"
> c170=\"1\" c171=\"0.01\" c173=\"959\" c181=\"5000\" c185=\"3127489\"
> c187=\"2\" c190=\"20190218000000000\" c193=\"C\" c195=\"MKS LN
> Equity\" c198=\"20110101110000000\" c199=\"B\" c200=\"1\" c201=\"T02\"
> c203=\"Q\" c224=\"5538.225\"/>
...