Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
286 views
in Technique[技术] by (71.8m points)

Add elements to xml file in java without loading it into memory

I have an application that generates very heavy xml files with lists of elements and I have to add elements to it in several steps and save them on hard disk. For example, in the first iteration the complete file would be generated:

<File>
    <Header>
        <Date>yyyy-MM-dd</Date>
        <Uuid>335773a6-1ee3-4ef8-95dd-65abed4226b4 </Uuid>
        <!-- Other params -->
    </Header>
    <Body>
    <!-- Other params -->
    <Users>
        <User>
            <Id>1</Id>
            <Name>John</Name>
            <Surname>Doe</Surname>
            <Mail>john@mail.com</Mail>
            <!-- Other params -->
        </User>
        <User>
            <Id>2</Id>
            <Name>John</Name>
            <Surname>Doe</Surname>
            <Mail>john@mail.com</Mail>
            <!-- Other params -->
        </User>
        <!-- Add more items here-->
    
    </Users>    
    </Body>
</File>

In the following iterations more elements are added (in the example only two more users):

<File>
    <Header>
        <Date>yyyy-MM-dd</Date>
        <Uuid>335773a6-1ee3-4ef8-95dd-65abed4226b4 </Uuid>
        <!-- Other params -->
    </Header>
    <Body>
    <!-- Other params -->
    <Users>
        <User>
            <Id>1</Id>
            <Name>John</Name>
            <Surname>Doe</Surname>
            <Mail>john@mail.com</Mail>
            <!-- Other params -->
        </User>
        <User>
            <Id>2</Id>
            <Name>John</Name>
            <Surname>Doe</Surname>
            <Mail>john@mail.com</Mail>
            <!-- Other params -->
        </User>
        <User>
            <Id>3</Id>
            <Name>John</Name>
            <Surname>Doe</Surname>
            <Mail>john@mail.com</Mail>
            <!-- Other params -->
        </User>
        <User>
            <Id>4</Id>
            <Name>John</Name>
            <Surname>Doe</Surname>
            <Mail>john@mail.com</Mail>
            <!-- Other params -->
        </User>     
        <!-- Add more items here-->
    
    </Users>    
    </Body>
</File>

As the files can be very long and I want to avoid memory problems, can I add new elements in the correct position without fully loading the file into memory?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You are probably looking for the XML Streaming API.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...