繁体   English   中英

如何在Java中使用DOM在XML文档中的相同层次结构级别上添加两个或多个相同名称的元素

[英]How to add two or more elements of the same name at the same hierarchical level in an XML document using DOM in Java

我一直在尝试使用DOM在Java中创建XML文档,其中在相同的层次结构级别上有多个具有相同名称的汽车元素,类似于以下内容:

<Root>
  <Car>
    <Make>Ford</Make>
    <Model>Fiesta</Model>
  </Car>
  <Car>
    <Make>VW</Make>
    <Model>Golf</Model>
  </Car>
</Root>

但是,在XML的构造过程中,每当我尝试添加另一个Car元素时,它似乎都会覆盖已经存在的Car元素,导致我在输出中仅获得一个Car元素。

我使用以下代码创建car元素:

Element carElement = doc.createElement("Car");

然后尝试附加到我使用以下代码创建的第一个Car元素:

root.appendChild(carElement);

我也尝试了以下代码无济于事:

Node existingCar = doc.getElementsByTagName("Car").item(0);
existingCar.getParentNode().insertBefore(carElement, existingCar);

Java文档指出,对于appendChild()和insertBefore()方法,如果newChild节点都存在,则首先将其删除-因此,为什么我认为Im仅在XML中看到一个输出。

因此,有人可以确认DOM是否可行吗? 如果是这样,他们是否可以建议或指出解决方案的方向? 谢谢

我可以确认使用DOM可以做到这一点!

您尚未向我们显示您的实际代码,您尝试在其中添加多个具有相同名称的子元素,因此我们无法确切告诉您为什么它不起作用。 但是,也许此代码段将为您提供有关如何修复代码的提示。 要添加五个Car元素:

    DocumentBuilder b = ...;

    DOMImplementation impl = b.getDOMImplementation();
    Document d = impl.createDocument(null, "Root", (DocumentType) null);
    Element root = d.getDocumentElement();
    for (int i = 0; i < 5; ++i) {
        Element car = d.createElement("Car");
        // add sub-elements/attributes to car element
        ...
        root.appendChild(car);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM