[
https://issues.apache.org/jira/browse/AXIOM-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andreas Veithen updated AXIOM-497:
----------------------------------
Fix Version/s: (was: 1.2.13)
> Removal of namespace declaration breaks type attribute
> ------------------------------------------------------
>
> Key: AXIOM-497
> URL: https://issues.apache.org/jira/browse/AXIOM-497
> Project: Axiom
> Issue Type: Bug
> Components: Core Model, OM Mixins
> Affects Versions: 1.2.13
> Environment: Weblogic 12.2.1.3 version application server
> Reporter: Unifiers Pega
> Priority: Critical
>
> When the following XML is converted to an OMElement, then written back out,
> the namespace prefix used by the xsi:type attribute refers to the incorrect
> namespace URI. That is because the local prefix mapping used in the type name
> reference is removed from the element that contains the type attribute during
> parsing.
> It appears to be caused by a null return value from the getNsBuilder method
> of AttributeCollector when it thinks the namespace declaration is redundant.
> Original XML:
> <ns1:A xmlns:ns1="urn:foo">
> <ns1:B xmlns:ns1="urn:bar">
> <ns2:C xmlns:ns1="urn:foo" xmlns:ns2="urn:bar"
> xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance]" xsi:type="ns1:TypeA"/>
> </ns1:B>
> </ns1:A>
> After conversion to OMElement, xsi:type name cannot be resolved because it is
> mapped to the wrong namespace URI:
> <ns1:A xmlns:ns1="urn:foo">
> <ns1:B xmlns:ns1="urn:bar">
> <ns2:C xmlns:ns2="urn:bar"
> xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance]" xsi:type="ns1:TypeA"/>
> </ns1:B>
> </ns1:A>
>
> Here's some sample code to reproduce the issue:
> ```
> System.out.println("Before StAX parsing:\n"+xmlString);
> try {
> java.io.StringReader stringReader = new java.io.StringReader(xmlString);
> javax.xml.stream.XMLInputFactory inputFactory =
> javax.xml.stream.XMLInputFactory.newInstance();
> javax.xml.stream.XMLStreamReader streamReader =
> inputFactory.createXMLStreamReader(stringReader);
> org.apache.axiom.om.impl.builder.StAXOMBuilder builder = new
> org.apache.axiom.om.impl.builder.StAXOMBuilder(streamReader);
> xmlString = builder.getDocumentElement().toString();
> } catch (Exception e) {
> System.out.println("Caught exception " + e);
> }
> System.out.println("After StAX parsing:\n"+xmlString);
> ```
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]