修改现有XML,添加和删除节点java

时间:2015-06-03 20:04:13

标签: java xml dom

现有XML

<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2013-08-01">
     <OperationRequest>
           <Arguments>xyz</Arguments>
     </OperationRequest>
     <Items>
        <Item>
            <ItemId>123<ItemId>
            <CustomerReviews>
                  <IFrameURL>someurl</IFrameURL>
                  <HasReviews>true</HasReviews>
            </CustomerReviews>
            <EditorialReviews>
                  <Content>text</Content>
            </EditorialReviews>  
        <Item>
     </Items>

需要将其转换为

<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2013-08-01">
     <OperationRequest>
           <Arguments>xyz</Arguments>
     </OperationRequest>
     <Items>
        <Item>
            <ItemId>123<ItemId>
            <CustomerReviews>
                  <CustomerReview>
                         <ReviewText>abc<ReviewText>
                         <ReviewDate>May 24, 2015<ReviewDate>
                  </CustomerReview>
                  <CustomerReview>
                         <ReviewText>def<ReviewText>
                         <ReviewDate>June 24, 2014<ReviewDate>
                  </CustomerReview>
                  <HasReviews>true</HasReviews>
            </CustomerReviews>
            <EditorialReviews>
                  <Content>text</Content>
            </EditorialReviews>  
        <Item>
     </Items>

我能够删除IFrameURL并能够在HasReviews之前插入节点CustomerReview,但是如何在CustomerReview中添加更多节点。 以下是我到目前为止使用其他Stack overflow post所取得的成就。

<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2013-08-01">
     <OperationRequest>
           <Arguments>xyz</Arguments>
     </OperationRequest>
     <Items>
        <Item>
            <ItemId>123<ItemId>
            <CustomerReviews>
                  <CustomerReview>hello</CustomerReview>
                  <CustomerReview>hello</CustomerReview>
                  <CustomerReview>hello</CustomerReview>
                  <HasReviews>true</HasReviews>
            </CustomerReviews>
            <EditorialReviews>
                  <Content>text</Content>
            </EditorialReviews>  
        <Item>
     </Items>

PS:XML结构最后有/ ItemLookupResponse,但在代码中不可见。

1 个答案:

答案 0 :(得分:0)

花了一整天后,我想出来了。

这是链接W3Schools,我曾经完成工作。微小的区别是,使用item(index)函数来访问特定的数组位置。对于例如使用DOM java时,下面代码中的第三行可以替换为x=xmlDoc.getElementsByTagName("book").item(0);

xmlDoc=loadXMLDoc("books.xml");
newel=xmlDoc.createElement("edition");
x=xmlDoc.getElementsByTagName("book")[0];
x.appendChild(newel);

其他功能也是如此。