我有这个节点
<Record status="updated">
<ID_Country>5</ID_Country>
<ID_Currency>162</ID_Currency>
<IsoCodeNumber>16 </IsoCodeNumber>
<IsoCodeLetter version="old">AS </IsoCodeLetter>
<IsoCodeLetter version="new">ASAS </IsoCodeLetter>
<PostCode> </PostCode>
<CountryName>American Samoa </CountryName>
<isEuCountry>0</isEuCountry>
</Record>
我正在尝试将此节点添加到另一个 XML 文件中并看起来像这样。
<Record>
<ID_Country>5</ID_Country>
<ID_Currency>162</ID_Currency>
<IsoCodeNumber>16 </IsoCodeNumber>
<IsoCodeLetter>ASAS </IsoCodeLetter>
<PostCode> </PostCode>
<CountryName>American Samoa </CountryName>
<isEuCountry>0</isEuCountry>
</Record>
这是我使用的代码
Node updatedNode = diffNode.cloneNode(true);
((Element) updatedNode).removeAttribute("status");
for (int i = 0; i < updatedNode.getChildNodes().getLength(); i++)
{
if (updatedNode.getChildNodes().item(i).getNodeType() == Node.ELEMENT_NODE)
{
Element e = (Element)updatedNode.getChildNodes().item(i);
String string = e.getNodeName();
if (e.hasAttribute("version") && e.getAttribute("version").equals("old"))
{
((Element) updatedNode).removeChild((Node)e);
}
if(e.hasAttribute("version") && e.getAttribute("version").equals("new"))
{
e.removeAttribute("version");
}
}
}
productXML.adoptNode(updatedNode);
prodRoot.insertBefore(updatedNode, nextNode);
由于某种原因,当循环通过第一个 IsoCodeLetter 节点并将其删除时,它会跳过下一个并转到 PostCode,但第二个 IsoCodeLetter 仍在新节点中,我将其附加到 XML 文件中,看起来像这样。
<Record>
<ID_Country>5</ID_Country>
<ID_Currency>162</ID_Currency>
<IsoCodeNumber>16 </IsoCodeNumber>
<IsoCodeLetter version="new">ASAS </IsoCodeLetter>
<PostCode> </PostCode>
<CountryName>American Samoa </CountryName>
<isEuCountry>0</isEuCountry>
</Record>
你有什么想法为什么会发生这种情况以及如何解决它?我正在使用 DOMParser 编写 XML 文件。