当前位置: 代码迷 >> java >> 多个重复的子元素xml
  详细解决方案

多个重复的子元素xml

热度:39   发布时间:2023-08-02 10:17:37.0

在这里寻求帮助。

我本打算使用simpleXml解析此xml文件,但我不确定100%如何继续。

这是xml代码的一个片段:

<bible abbrev="ReinaV" name="Reina Valera Actualizada">
  <book num="Gen">
    <chapter num="1">
      <verse num="1">En el principio creó Dios los cielos y la tierra
      </verse>
      <verse num="2">
      Y la tierra estaba sin orden y vacía. Había tinieblas sobre la faz del
      océano, y el Espíritu de Dios se movía sobre la faz de las aguas.
      </verse>
      <verse num="3">Entonces dijo Dios: "Sea la luz", y fue la luz.</verse>
      <verse num="4">
       Dios vio que la luz era buena, y separó Dios la luz de las tinieblas.
      </verse>
    </chapter>
  </book>
</bible>

这是我到目前为止的内容:

@Root
public class bible {

@Attribute
String abbrev;
@Attribute
String name;
@Element
Book book;

public String getAbbrev() {
    return abbrev;
}

public String getName() {
    return name;
}

public Book getBook() {
    return book;
}

@Root(strict = false)
private class Book {

    @Attribute(required = false)
    String num;

    @Element(required = false)
    Chapter chapter;

    private class Chapter {
    }
  }
}

如何管理重复的诗歌元素? 谢谢=)

List@ElementList -annotation一起使用。 由于@ElementList将创建一个包装列表内容的元素,因此请使用inline = true来防止这种情况。

圣经

@Root(name = "bible")
public class Bible
{
    @Attribute
    private String name;
    @Attribute
    private String abbrev;
    @Element(required = false)
    private Book book;

    // ...
}

@Root(name = "book")
public class Book
{
    @Attribute
    private String num;
    @Element(required = false)
    private Chapter chapter;

    // ...
}

章节

@Root(name = "chapter")
public class Chapter
{
    @Attribute
    private String num;
    @ElementList(name = "verse", required = false, inline = true) /* <-- ! */
    private List<Verse> verse;

    // ...
}

@Root(name = "verse")
public class Verse
{
    @Attribute
    private String num;
    @Text
    private String text;

    // ...
}

顺便说一句,所有那些required = false可选的 ,我已经将它们设置为启用。 一本空书-没有子元素。 如果那没有道理,请删除它们。

使用@ElementList可以有一章包含多节经文-但是您可以使用eg进行相同的操作。 图书; 一本书可能有多个章节等。

  相关解决方案