次のような AIML ファイルがあります。
<xml>
<aiml>
<category>
<pattern>Question 1</pattern>
<that>Optional</that>
<template>Answer</template>
</category>
<category>
<pattern>Question 2</pattern>
<that>Optional</that>
<template><random><li>Answer 1</li><li>Answer 2</li></random></template>
</category>
<topic name="test">
<category>
<pattern>Question 1</pattern>
<that>Optional</that>
<template><random><li>Answer 1</li><li>Answer 2</li><li>Answer 3</li></random></template>
</category>
</topic>
</aiml>
そして、それをCSVに変換したい:
0,Question 1,*,Optional, Answer,test.aiml
0,Question 2,*,Optional, <random><li>Answer 1</li><li>Answer 2</li></random>,test.aiml
0,Question 1,test,*, <random><li>Answer 1</li><li>Answer 2</li><li>Answer 3</li></random>,test.aiml
しかし、結果は次のとおりです。
0,Question 1,*,Optional, Answer,test.aiml
0,Question 2,*,Optional, Answer 1Answer 2,test.aiml
0,Question 1,test,*, Answer 1Answer 2Answer 3,test.aiml
理由はわかりませんが、 node.getTextContent() はすべてのタグを削除し、そのコンテンツのみを返します。toString はタグ名を返します。また、random タグと li タグをテキストとして処理する方法が見つかりません。それがタグの内容を取得する方法です:
eElement.getElementsByTagName("template").item(0).getTextContent();