Test.xmlUnity記事: 目次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="UTF-8"?> <Scores> <User Name="Tim"> <Score>100</Score> </User> <User Name="Mike"> <Score>200</Score> </User> <User Name="Sam"> <Score>300</Score> </User> <User Name="Victor"> <Score>400</Score> </User> <User Name="Davey"> <Score>500</Score> </User> </Scores> |
XmlLoader.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
using System.Collections; using System.IO; using System.Xml; using UnityEngine; using UnityEngine.Networking; /// <summary> /// /// Unity 2019.1.8f1 /// /// </summary> public class XmlLoader : MonoBehaviour { ///////////////////////////////////////////////////////////////////////////////////// // Field //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// // XMLファイルを置いているディレクトリのURL private static readonly string serverURL = "http://YOUR_WEB_SERVER/XML/"; ///////////////////////////////////////////////////////////////////////////////////// // Start //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// // Start is called before the first frame update private void Start() { // Test.xmlからTimさんのスコアを取り出す StartCoroutine(XmlLoad("Test", "Tim")); } ///////////////////////////////////////////////////////////////////////////////////// // Get Score //////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// private IEnumerator XmlLoad(string fileName, string userName) { // 1. ダウンロード yield return DownloadXML(fileName); // 2. 読み込み XmlDocument xmlDoc = ReadXML(fileName); // 3. データの取り出し string XPath = "/Scores/User[@Name='" + userName + "']/Score"; // XPathで指定 XmlNode node = xmlDoc.SelectSingleNode(XPath); Debug.Log(userName + "'s Score : " + node.InnerText); } ///////////////////////////////////////////////////////////////////////////////////// // Download ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// private IEnumerator DownloadXML(string fileName) { // ダウンロード UnityWebRequest xmlDownload = UnityWebRequest.Get(serverURL + fileName + ".xml"); yield return xmlDownload.SendWebRequest(); // 失敗時 if (!string.IsNullOrEmpty(xmlDownload.error)) { Debug.Log("取得失敗", gameObject); } // 成功時 else { // ファイル作成 string filePath = Path.Combine(Application.persistentDataPath, fileName); File.WriteAllBytes(filePath, xmlDownload.downloadHandler.data); } } ///////////////////////////////////////////////////////////////////////////////////// // Read ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// private XmlDocument ReadXML(string fileName) { // ファイルパス string filePath = Path.Combine(Application.persistentDataPath, fileName); // 読み込み XmlDocument xmlData = new XmlDocument(); xmlData.Load(filePath); // ファイル削除 File.Delete(filePath); // 戻り値 return xmlData; } } |