やりたくなかったけど、大体できた。
以下テストコード
package xml2json
import "testing"
func TestXml2JSON(t *testing.T) {
// xmlstr := "<data>aiueo</data>"
// xmlstr := "<data>aiueo</data><data>bbbbb</data>"
xmlstr := "<DATA TYPE=\"JSON\" FORCEARRAY=\"//LIST/ITEM //LIST/ITEM/TAGS\">" +
"<LIST>" +
" <ITEM id='1'>" +
" <UUID>0f164f93-fe33-44d4-8f2a-f94518b7cb51</UUID>" +
" <TITLE>たいとるなんな</TITLE>" +
" <TAGS>(:コメントはどうなるの?:)" +
" <name ID='1' IMPORTANCE='20'>あいうえお</name>" +
" <name>かきくけこ</name>" +
" <OTHER>aaaa</OTHER>" +
" <name>さしすせそ</name>" +
" </TAGS>" +
" </ITEM>" +
" <ITEM>" +
" <UUID>f36ea96f-97a8-438e-8656-ca7365f23df9</UUID>" +
" <TITLE>たいとるなんです</TITLE>" +
" <TAGS>(:コメントはどうなるの?:)" +
" <name>あああ</name>" +
" <name>いいいい</name>" +
" <name>ううううう</name>" +
" </TAGS>" +
" </ITEM>" +
"</LIST>" +
"</DATA>"
xml2json(xmlstr)
}
変換後(改行はないけどフォーマットした)
{
"DATA": {
"-TYPE": "JSON",
"-FORCEARRAY": "//LIST/ITEM //LIST/ITEM/TAGS",
"LIST": {
"ITEM": [
{
"-id": "1",
"UUID": "0f164f93-fe33-44d4-8f2a-f94518b7cb51",
"TITLE": "たいとるなんな",
"TAGS": {
"name": [
{
"-ID": "1",
"-IMPORTANCE": "20",
"#text": "あいうえお"
},
"かきくけこ",
"さしすせそ"
],
"OTHER": "aaaa"
}
},
{
"UUID": "f36ea96f-97a8-438e-8656-ca7365f23df9",
"TITLE": "たいとるなんです",
"TAGS": {
"name": [
"あああ",
"いいいい",
"ううううう"
]
}
}
]
}
}
}
あと考慮するのは以下2点
1.どこのパスからパースするかの指定をアトリビュートに持つ
2.FORCEARRAYの機能実装
どちらも目処は立っている
0 件のコメント:
コメントを投稿