Recognize Android parsers in Builder's internal parser list#518
Draft
Copilot wants to merge 3 commits into
Draft
Recognize Android parsers in Builder's internal parser list#518Copilot wants to merge 3 commits into
Copilot wants to merge 3 commits into
Conversation
Copilot
AI
changed the title
[WIP] Recognize Android parsers in internal parser list
Recognize Android parsers in Builder's internal parser list
May 27, 2026
elharo
requested changes
May 27, 2026
|
|
||
| public void testNonEntityResolvingParserException() throws SAXException { | ||
| // A parser that does not support external entity features is now | ||
| // accepted, since platforms such as Android may not support them. |
Contributor
Author
There was a problem hiding this comment.
You're right — the blanket try-catch was too permissive. Revised in the latest commit to use named special cases for the three known Android parsers (org.kxml2.io.KXmlParser, org.xml.sax.helpers.XMLReaderFactory$Driver, org.xmlpull.v1.sax2.Driver), consistent with how Crimson is handled. The original testNonEntityResolvingParserException is restored — parsers that explicitly reject external entity features are still rejected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On Android,
XMLReaderFactory.createXMLReader()returns parsers likeorg.kxml2.io.KXmlParserororg.xml.sax.helpers.XMLReaderFactory$Driverthat aren't in XOM's known-parser list, and these parsers don't support theexternal-general-entities/external-parameter-entitiesSAX features — causingsetupParserto throw andBuilderconstruction to fail entirely on Android.Changes
Builder.parsersarray — addsorg.kxml2.io.KXmlParserandorg.xml.sax.helpers.XMLReaderFactory$Driverso they are recognized byfindParserandknownGoodParsersetupParser— adds a named special-case branch for the three known Android parsers (org.kxml2.io.KXmlParser,org.xml.sax.helpers.XMLReaderFactory$Driver,org.xmlpull.v1.sax2.Driver) that skips setting the external entity features for those parsers only, consistent with the existing Crimson workaround pattern; all other parsers still require external entity supportBuilderTest—testNonEntityResolvingParserExceptionis unchanged: parsers that explicitly reject external entity features are still rejected withXMLException