XML と XMLList
XML の形式は正しいはずなのにパースエラーになる場合、 XML と XMLList の違いを考慮する必要があるかもしれません。
XML
ルートノードの直下に並列した属性が存在しない場合、こちらを使います。具体的には、以下のような XML の場合は XML にキャストできます。
<person> <name>TREE</name> <age>17</age> <birthday>4/2</birthday> </person>
XMLList
上とは逆に、ルートノードの直下でリストのように属性が並列に並んだ場合、こちらでないとキャストできません。
<game_list> <game> <title>東方紅魔郷</title> <release>C62</release> </game> <game> <title>東方妖々夢</title> <release>C64</release> </game> <game> <title>東方永夜抄</title> <release>C66</release> </game> </game_list>
注意点
以下のような XML を取得したとします。
<person> <name>TREE</name> <age>17</age> <equipment_list> <equipment>てつのバット</equipment> <equipment>ひきこもりのふく</equipment> <equipment>のろいのベルト</equipment> </equipment_list> </person>
この XML は XML 型として取得できますが、ここから equipment_list を引数として渡すような場合、 XMLList を指定しないとエラーになってしまいます。equipment_list をルートノードとして考えると、 equipment が並列に並んだ XMLList とみなされるためです。