[ 
https://issues.apache.org/jira/browse/AXIOM-478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15085183#comment-15085183
 ] 

LU Jie commented on AXIOM-478:
------------------------------

Hi Andreas,

Answers:
1. Currently we use abdera 0.4.0 with axiom 1.2.5. 
2. We didn't use IBM XLXP. What we have is the StAX with abdera 0.4.0 project.

More details:
I tested the axiom API with test code. I tried to parse an atom with 40MB 
content. It allocated arount 260MB objects in memory. To fix this issue, I have 
to impl a parser to parse CMIS atom with pull-parser as axiom user guide 
mentioned. 

Now we are updating our dependency to abdera 1.1.3 with axiom 1.2.16. Out plan 
is to parse the base64 content and decode as stream, then serialize it to a 
file in storage to avoid loading whole file to memory. I DO know I can use 
XMLStreamReaderUtils.getElementTextAsStream. But We prefer to use axiom API 
instead of pull-parser to avoid writing and maintaining a parser by ourselves. 
So I need help to clarify if the latest axiom element interface has this 
capability. Or would you point me if there's alternative solution?

Thank you in advance for the help!

> Solution for parsing large XML
> ------------------------------
>
>                 Key: AXIOM-478
>                 URL: https://issues.apache.org/jira/browse/AXIOM-478
>             Project: Axiom
>          Issue Type: Question
>            Reporter: LU Jie
>
> This is LU Jie from IBM. We use axiom to parse Atom in our project. 
> One of our CMIS API will attach file content to the XML. If the file size is 
> large, we will get a large atom.
> If we use Entry.getExtension(QName) to parse the content, it will allocate a 
> large memory(around 5-6 times of the file size).
> We need you help to clarify if we can use DOM-like API of axiom to get the 
> text of a certain element as stream. That is without allocating a large 
> object in memory.
> Or is there an alternative solution for this use case?
> We DO know that we can use pull-parser to parse the XML as stream. But we 
> need help to investigate if axiom has already provided an API or solution to 
> avoid writing parser by ourselves.
> Here's the sample XML. We need to parse the text of cmisra:base64 element:
> {noformat}
> <atom:entry
>     xmlns:atom="http://www.w3.org/2005/Atom";
>     xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/";
>     xmlns:chemistry="http://chemistry.apache.org/";
>     xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/";>
>     <atom:id
>         
> xmlns:atom="http://www.w3.org/2005/Atom";>urn:uuid:00000000-0000-0000-0000-00000000000
>     </atom:id>
>     <atom:title
>         xmlns:atom="http://www.w3.org/2005/Atom"; 
> type="text">doucment1446016556658.txt
>     </atom:title>
>     <atom:updated
>         xmlns:atom="http://www.w3.org/2005/Atom";>2015-10-28T07:15:57.594Z
>     </atom:updated>
>     <cmisra:content
>         xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/";>
>         <cmisra:mediatype
>             
> xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/";>text/plain
>         </cmisra:mediatype>
>         <chemistry:filename
>             
> xmlns:chemistry="http://chemistry.apache.org/";>doucment1446016556658.txt
>         </chemistry:filename>
>         <cmisra:base64
>             
> xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/";>Base64 
> encoded content of large file
>         </cmisra:base64>
>     </cmisra:content>
>     <cmisra:object
>         xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/";>
>         <cmis:properties
>             xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/";>
>             <cmis:propertyId
>                 xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"; 
> propertyDefinitionId="cmis:objectTypeId">
>                 <cmis:value
>                     
> xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/";>snx:file
>                 </cmis:value>
>             </cmis:propertyId>
>             <cmis:propertyString
>                 xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"; 
> propertyDefinitionId="cmis:name">
>                 <cmis:value
>                     
> xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/";>doucment1446016556658.txt
>                 </cmis:value>
>             </cmis:propertyString>
>         </cmis:properties>
>     </cmisra:object>
> </atom:entry>
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to