использование Castor для анализа xml на основе значений атрибутов - PullRequest
1 голос
/ 19 января 2010

Использование Castor для анализа следующего XML-файла в POJO с использованием файла отображения довольно просто:

<human name="bob"/>
<dog owner="alice"/>

Используется имя элемента для сопоставления с классом. Но что, если для сопоставления должен использоваться атрибут? e.g.:

<animal type="human" name="bob"/>
<animal type="dog" owner="alice"/>

Этот надуманный пример основан на XML, который я должен использовать (хотя я его не написал!). Любые идеи о том, как подойти к этому с помощью картографических файлов Castor?

1 Ответ

0 голосов
/ 06 марта 2010

Есть два способа приблизиться к этому. Измените свою структуру классов Java, чтобы в нее входили животные и собаки, а затем напишите файл сопоставления для Animal.

Или просто используйте XSLT для преобразования ваших данных. Примерно так может работать:

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

<xsl:template match="animal">
  <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text>
       <xsl:value-of select="@type" /><xsl:text disable-output-escaping="yes"> </xsl:text>name="<xsl:value-of select="@name" />"
  <xsl:text disable-output-escaping="yes"><![CDATA[/>]]></xsl:text>
</xsl:template>
</xsl:stylesheet>
...