Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

XMLからDictionaryを作成する。

unitygeek.hatenablog.com

XMLを読み込んで、タグ名と値からDictionaryを作っておくと便利な場合がある。この方法について。

サンプルXML

<?xml version="1.0" encoding="utf-8"?>
<works>
  <title>リップヴァンウィンクルの花嫁</title>
  <director>岩井俊二</director>
  <company>ロックウェルアイズ</company>
  <year>2016</year>
</works>

XMLからDicionaryに変換するコード

下の通り。

XMLのトップ階層を読み込んで、いったん、KeyValuePairを作成する。

その後、KeyValuePairをDictionaryへ変換する。

という手順。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using System.Xml.Linq;

namespace XOOMS.IO
{

    public class XMLDictionary : MonoBehaviour
    {

        [SerializeField] string xmlFileName = "pairs.xml";

        // Use this for initialization
        void Start()
        {
            //相対パスから環境に応じて絶対パスを取得する
            XDocument xdoc = XDocument.Load(FileUtil.GetFullPathFromRelative(xmlFileName));

            //トップ階層の要素を取り出す
            IEnumerable<KeyValuePair<string, string>> keyvaluepairs = xdoc.Root.Elements()
                                      //KeyValuePairを作成する
                                      .Select(x => new KeyValuePair<string, string>
                                      (
                                          x.Name.LocalName,
                                          x.Value
                                      ));

            //KeyValuePairからDictionaryへ変換
            Dictionary<string, string> dict = keyvaluepairs.ToDictionary(x => x.Key, x => x.Value);

            foreach (var d in dict)
            {
                Debug.Log(string.Format("{0}:{1}", d.Key, d.Value));
            }

        }

    }
}