由于项目需要,现在需要将一个Document的节点替换掉另一个Document的相同节点,本来想用replaceChild方法来做,但是总是出错,希望各位大虾帮忙,必有分数回报。具体的情况是这样的:
第一个Document结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<CIF xmlns:xalan="http://xml.apache.org/xslt">
<CONTROLAREA>
<ActionFlag>A </ActionFlag>
</CONTROLAREA>
<BDA>
<Organization>
<TypeCode>003 </TypeCode>
<Site>
<Num>2 </Num>
<Address>
<AddressTypeCode />
<AddressLanguageCode />
</Address>
<PhoneInfo>
<PhoneType>MAIN </PhoneType>
<PrimaryFlag>TRUE </PrimaryFlag>
</PhoneInfo>
</Site>
</Organization>
</BDA>
</CIF> 第二个Document也有与此相同的结构,不过 <Address>标签里有值,其他标签里没值。
<?xml version="1.0" encoding="UTF-8"?>
<CIF xmlns:xalan="http://xml.apache.org/xslt">
<CONTROLAREA>
<ActionFlag> </ActionFlag>
</CONTROLAREA>
<BDA>
<Organization>
<TypeCode/>
<Site>
<Num> </Num>
<Address>
<AddressTypeCode>123 </AddressTypeCode>
<AddressLanguageCode>EN </AddressLanguageCode>
</Address>
<PhoneInfo>
<PhoneType> </PhoneType>
<PrimaryFlag> </PrimaryFlag>
</PhoneInfo>
</Site>
</Organization>
</BDA>
</CIF> 现在我想做的是把第二个Document里的 <Address>标签替换到第一个Document里,这样第一个Document的数据就齐全了。当然这个Document的结构经过简化了,项目里的数据更多,所以才想用节点替换的方法把这两个Document合并。请各位高手帮帮忙啊,我自己实在做不出来了。紧急求助,如果能按照项目需求的来实现,必有高分回报!!
第一个Document结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<CIF xmlns:xalan="http://xml.apache.org/xslt">
<CONTROLAREA>
<ActionFlag>A </ActionFlag>
</CONTROLAREA>
<BDA>
<Organization>
<TypeCode>003 </TypeCode>
<Site>
<Num>2 </Num>
<Address>
<AddressTypeCode />
<AddressLanguageCode />
</Address>
<PhoneInfo>
<PhoneType>MAIN </PhoneType>
<PrimaryFlag>TRUE </PrimaryFlag>
</PhoneInfo>
</Site>
</Organization>
</BDA>
</CIF> 第二个Document也有与此相同的结构,不过 <Address>标签里有值,其他标签里没值。
<?xml version="1.0" encoding="UTF-8"?>
<CIF xmlns:xalan="http://xml.apache.org/xslt">
<CONTROLAREA>
<ActionFlag> </ActionFlag>
</CONTROLAREA>
<BDA>
<Organization>
<TypeCode/>
<Site>
<Num> </Num>
<Address>
<AddressTypeCode>123 </AddressTypeCode>
<AddressLanguageCode>EN </AddressLanguageCode>
</Address>
<PhoneInfo>
<PhoneType> </PhoneType>
<PrimaryFlag> </PrimaryFlag>
</PhoneInfo>
</Site>
</Organization>
</BDA>
</CIF> 现在我想做的是把第二个Document里的 <Address>标签替换到第一个Document里,这样第一个Document的数据就齐全了。当然这个Document的结构经过简化了,项目里的数据更多,所以才想用节点替换的方法把这两个Document合并。请各位高手帮帮忙啊,我自己实在做不出来了。紧急求助,如果能按照项目需求的来实现,必有高分回报!!
解决方案 »
- 想把SQL里边的图片放到JLABLE里,但是不能直接引用INPUTSTREAM,问问怎么办?
- 上次日期格式化的问题
- 数学成绩 正比于 编程能力吗?
- 文件路径问题
- while和Enumeration的疑问,很简单呵呵
- 画图程序的保存功能
- 请教2个关于方法的小问题。
- java 监控
- 求教大虾!!! 如何在jdk1.3中使用ImageIO这个类。
- 向数据库Access中存储中文数据时,要对字符串如何转变!变成GB2312还是ISO-8895-1,还是其他?
- 请教:java socket能不能实现IPv4客户端和IPv6客户端的互访
- 请教大家个 scjp认证里面的试题(标题要长.-------------------------------------------------------)
然后写入到第一个Document Address里?小弟菜鸟 望高手指教
再用appendChild方法添加.
http://www.java2s.com/CN/Code/Java/XML/JavaDOMeditCopyaNodefromOneParseTreeintoAnother.htm
public Document mergeCifDoc(Document pwcompany, Document pwlocation)
throws Exception {
Element root = pwlocation.getDocumentElement();
NodeList locaAddr = root.getElementsByTagName("Address");
Element rootComp = pwcompany.getDocumentElement();
NodeList compAddr = rootComp.getElementsByTagName("Address");
Element element = (Element)locaAddr.item(0);
Element element2 = (Element)compAddr.item(0);
pwcompany.replaceChild(element, element2);
}
最后一步,在replaceChild的时候报的错误如下:
org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it.
at org.apache.xerces.dom.ParentNode.internalInsertBefore(Unknown Source)
at org.apache.xerces.dom.ParentNode.replaceChild(Unknown Source)
at org.apache.xerces.dom.CoreDocumentImpl.replaceChild(Unknown Source)
at com.ibm.ccm.service.transformprovider.TransformProvider.mergeCifDoc(TransformProvider.java:109)
at com.ibm.ccm.service.transformprovider.TransformProvider.main(TransformProvider.java:63)各位高手帮忙给看看啊,我实在是没辙了。最好是能给出解决问题的代码~~