すべての属性の改行を代替文字に置き換えるには、XSLT (または何か- 以下を参照) が必要です。
すべてのデータを属性として保存し、カーディナリティを表現するために改行を使用する従来の XML を処理する必要があります。例えば:
<sample>
<p att="John
Paul
Ringo"></p>
</sample>
これらの改行は、Java でファイルを解析するときに (XML 仕様に従って) 空白に置き換えられますが、それらをリストとして扱いたいので、この動作は特に役に立ちません。
私の「解決策」は、XSLT を使用してすべての属性のすべての改行を他の区切り文字に置き換えることでしたが、XSLT の知識はまったくありません。これまで見てきたすべての例は、非常に具体的であるか、属性値の代わりにノード コンテンツを置き換えていました。
私は XSLT 2.0 に手をreplace()
出しましたが、すべてをまとめるのに苦労しています。
XSLT は正しい解決策ですか? 以下の XSLT を使用します。
<xsl:template match="sample/*">
<xsl:for-each select="@*">
<xsl:value-of select="replace(current(), '\n', '|')"/>
</xsl:for-each>
</xsl:template>
サンプル XML に適用すると、Saxon を使用して次のように出力されます。
John Paul Ringo
明らかに、この形式は私が求めているものではありません - これは単に実験するためのものですreplace()
- しかし、XSLT 処理に到達するまでに、改行は既に正規化されていますか? もしそうなら、Javaパーサーを使用してこれらの値を書き込みとして解析する他の方法はありますか? これまでのところ、JAXB のみを使用してきました。