java - 使用 java 创建重复的 xml 元素

标签 java xml

我在使用我正在寻找的层次结构创建 xml 文档时遇到问题..

<claimants>
<claimant>
    <Area>Discrimination/Equality</Area>
    <Complaints>1</Complaints>
    <AssocatedComplaints>3</AssocatedComplaints>
 </claimant>
 <claimant>
    <Area>Redundancy</Area>
    <Complaints>1</Complaints>
    <AssocatedComplaints>3</AssocatedComplaints>
 </claimant>

我明白了-

<claimants>
<claimant>
    <Area>Discrimination/Equality</Area>
    <Complaints>1</Complaints>
    <AssocatedComplaints>3</AssocatedComplaints>
    <Area>Redundancy</Area>
    <Complaints>1</Complaints>
    <AssocatedComplaints>3</AssocatedComplaints>
    <Area>Terms and Conditions of Employment</Area>
    <Complaints>1</Complaints>
    <AssocatedComplaints>3</AssocatedComplaints>
</claimant>

这是代码的相关部分,appendchild 没有像我预期的那样工作,我尝试了几个其他选项,我怎样才能让 claimant 元素填充并重复??

Document document = new DocumentImpl();
Element claimants = document.createElement("claimants");
Element claimant = document.createElement("claimant");

... ...

rs = ps.executeQuery();
while (rs.next())  {
    // get data in
    String area = rs.getString("Area");
    System.out.println(">> Area : "+area);
    complaints = rs.getString("Complaints");
    System.out.println(">> Complaints : "+ complaints);
    associated = rs.getString("Associated");
    System.out.println(">> Associated : "+associated);

    // write text elements
    Element eArea = document.createElement("Area");
    eArea.appendChild(document.createTextNode(area));
    Element eComplaints = document.createElement("Complaints");
    eComplaints.appendChild(document.createTextNode(complaints));
    Element eAssociated = document.createElement("AssocatedComplaints");
    eAssociated.appendChild(document.createTextNode(associated));

    // append to claimant 
    System.out.println("appending ELEMENTS to claimant");
    claimant.appendChild(eArea);
    claimant.appendChild(eComplaints);
    claimant.appendChild(eAssociated);

    // append to claimants
    System.out.println("appending claimant to claimants");
    claimants.appendChild(claimant);
    //claimants.insertBefore(claimant, claimants.firstChild);

    System.out.println("creating new element claimant");
    Element claimant = document.createElement("claimant");
    }

document.appendChild(claimants);

感谢任何帮助..

最佳答案

您需要为每次迭代创建一个新的claimaint循环中:

while (rs.next())  {
  Element claimant = document.createElement("claimant"); // a new claimaint is created for each new row

  // append elements to claimant
  claimant.appendChild(eArea);
  claimant.appendChild(eComplaints);
  claimant.appendChild(eAssociated);

  // append to claimaints
  claimants.appendChild(claimant);
}

关于java - 使用 java 创建重复的 xml 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023009/

相关文章:

c# - 如何强制 XmlSerializer 将元素序列化为编译类型的属性?

java - 将 MapStruct SPI 自定义 AccessorNamingStrategy 与 Gradle 结合使用

java - 如何停止 Bukkit 中的重复任务计划

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

c# - Json.Net 将复杂对象序列化为 Xml 属性和值

sql - 使用带有 XMLNS 的 OPENXML 命令将 XML 导入 SQL 服务器

python - 创建 XML 内联 xmlns

Python Pandas 数据框到 XML

java - 如何使用 Java 8 lambda 将对象添加到另一个列表内的列表中

java - UI 组件问题 onPageLoad 方法 ADF oracle