有什么方法可以避免在xml解析期间处理XML中的转义字符串

时间:2019-02-19 05:16:22

标签: java xml xml-parsing sax jaxp

我们有一个从外部应用程序接收xml响应的应用程序。对于其中一个响应,我们面临一个问题。我们可以一次接收多个响应。

  1. 首先,我们解析所有响应Jsoup.parse(xml,“”, Parser.xmlParser());。隔离响应。
  2. 现在生成的文档对象包含 多个元素,每个元素包含一个响应。
  3. 现在,我们遍历每个元素,并使用SAXParser对其进行解析。

对于上述实现,当xml响应包含转义字符串时,它们将在第一步中进行处理,而在第三步进行解析时,我将收到以下异常,因为转义字符串已被处理并替换为实际的strins(“ <”和“>”)。

我想知道是否有任何方法可以避免在第一步中处理那些转义字符串。这可能是一个设计问题,但我想知道是否有我可以尝试的替代方法而无需更改很多实施。

[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\"/>

0 个答案:

没有答案