нежелательные элементы в XML - PullRequest
1 голос
/ 22 августа 2011

У меня есть следующие DTO

@XStreamAlias("outline")
public class OutlineItem implements java.io.Serializable {

    private static final long serialVersionUID = -2321669186524783800L;

    @XStreamAlias("text")
    @XStreamAsAttribute
    private String text;

    @XStreamAsAttribute
    @XStreamImplicit
    private List<OutlineItem> childItems;
}

раз я делаю

XStream stream = new XStream();
stream.processAnnotations(OutlineItem.class);
stream.toXML(outlineItem.getChildItems()); //This is a List of all the child items

я получаю это в качестве выходного текста

<List>
    <outline text="Test Section1">
        <outline text="Sub Section1 1">
        </outline>
        <outline text="Sub Section1 2">
        </outline>
    </outline>
    <outline text="Test Section 2">
        <outline text="Test Section2 1">
        </outline>
    </outline>
</List>

тогда как я хочу, чтобы результат был:

<outline text="Test Section1">
    <outline text="Sub Section1 1">
    </outline>
    <outline text="Sub Section1 2">
    </outline>
</outline>
<outline text="Test Section 2">
    <outline text="Test Section2 1">
    </outline>
</outline>

Как мне избавиться от тега Initial List? любая помощь очень ценится.

PS> Это продолжение вопроса, который я задавал пару недель назад

Может ли это быть достигнуто с помощью XSLT вообще?

1 Ответ

0 голосов
/ 23 августа 2011

Ответ XSLT является немедленным:

  • преобразование идентичности (вариант кажется достаточным, учитывая ваш входной образец)
  • "uncopy" Список правило

[XSLT 1.0]

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="*">
  <xsl:copy>
  <xsl:copy-of select="@*"/>
  <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<xsl:template match="List">
  <xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...