久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Unity3D研究院之使用 C#合成解析XML與JSON(四十一) | 雨松MOMO程序研究院

 歸葉米古 2017-06-12

             XML與JSON在開發(fā)中非常重要,, 其實核心就是處理字符串。一個是XML的字符串一個是JSON的字符串,,尤其是在處理網絡請求的時候,肯定是要用的,。另外現(xiàn)在JSON非常的流行,我寫了一個簡單的例子融合了XML與JSON的合成與解析,,希望大家喜歡!

 

Unity3D研究院之使用 C#合成解析XML與JSON(四十一) - 雨松MOMO程序研究院 - 1

首先注意頭文件,,LitJson是處理JSON的第三方庫,最后我會給出下載地址,。

C#
1
2
3
4
5
6
7
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.IO;
using System.Text;
using LitJson;

 

 

1,、生成XML

C#
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
public void createXml()
{
               //xml保存的路徑,,這里放在Assets路徑 注意路徑。
string filepath = Application.dataPath + @"/my.xml";
               //繼續(xù)判斷當前路徑下是否有該文件
if(!File.Exists (filepath))
{
                         //創(chuàng)建XML文檔實例
XmlDocument xmlDoc = new XmlDocument();
                         //創(chuàng)建root節(jié)點,,也就是最上一層節(jié)點
XmlElement root = xmlDoc.CreateElement("transforms");
                          //繼續(xù)創(chuàng)建下一層節(jié)點
XmlElement elmNew = xmlDoc.CreateElement("rotation");
                        //設置節(jié)點的兩個屬性 ID 和 NAME
     elmNew.SetAttribute("id","0");
     elmNew.SetAttribute("name","momo");
       //繼續(xù)創(chuàng)建下一層節(jié)點
              XmlElement rotation_X = xmlDoc.CreateElement("x");
                     //設置節(jié)點中的數(shù)值
                     rotation_X.InnerText = "0";
                    XmlElement rotation_Y = xmlDoc.CreateElement("y");
                    rotation_Y.InnerText = "1";
                    XmlElement rotation_Z = xmlDoc.CreateElement("z");
                     rotation_Z.InnerText = "2";
                    //這里在添加一個節(jié)點屬性,,用來區(qū)分,。,。
      rotation_Z.SetAttribute("id","1");
             //把節(jié)點一層一層的添加至XMLDoc中 ,請仔細看它們之間的先后順序,,這將是生成XML文件的順序
             elmNew.AppendChild(rotation_X);
             elmNew.AppendChild(rotation_Y);
             elmNew.AppendChild(rotation_Z);
     root.AppendChild(elmNew);
             xmlDoc.AppendChild(root);
             //把XML文件保存至本地
             xmlDoc.Save(filepath);
Debug.Log("createXml OK!");
}
}

 

運行結果

C#
1
2
3
4
5
6
7
<transforms>
  <rotation id="0" name="momo">
    <x>0</x>
    <y>1</y>
    <z id="1">2</z>
  </rotation>
</transforms>

 

2.更新XML文件

以其中某個節(jié)點名稱做條件,當查詢到時更新該節(jié)點

C#
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
public void UpdateXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
                         //根據(jù)路徑將XML讀取出來
xmlDoc.Load(filepath);
                         //得到transforms下的所有子節(jié)點
XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;
                         //遍歷所有子節(jié)點
foreach(XmlElement xe in nodeList)
{
                                //拿到節(jié)點中屬性ID =0的節(jié)點
if(xe.GetAttribute("id")=="0")
{
                                        //更新節(jié)點屬性
xe.SetAttribute("id","1000");
                                        //繼續(xù)遍歷
foreach(XmlElement x1 in xe.ChildNodes)
{
if(x1.Name=="z")
{
                                                        //這里是修改節(jié)點名稱對應的數(shù)值,而上面的拿到節(jié)點連帶的屬性,。。,。
x1.InnerText="update00000";
}
}
break;
}
}
xmlDoc.Save(filepath);
Debug.Log("UpdateXml OK!");
}
}

 

運行結果

C#
1
2
3
4
5
6
7
<transforms>
  <rotation id="1000" name="momo">
    <x>0</x>
    <y>1</y>
    <z id="1">update00000</z>
  </rotation>
</transforms>

 

3.添加XML

重復的地方我就不解釋拉,。

C#
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
public void AddXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNode root = xmlDoc.SelectSingleNode("transforms");
XmlElement elmNew = xmlDoc.CreateElement("rotation");
elmNew.SetAttribute("id","1");
    elmNew.SetAttribute("name","yusong");
         XmlElement rotation_X = xmlDoc.CreateElement("x");
             rotation_X.InnerText = "0";
rotation_X.SetAttribute("id","1");
             XmlElement rotation_Y = xmlDoc.CreateElement("y");
             rotation_Y.InnerText = "1";
             XmlElement rotation_Z = xmlDoc.CreateElement("z");
             rotation_Z.InnerText = "2";
             elmNew.AppendChild(rotation_X);
             elmNew.AppendChild(rotation_Y);
             elmNew.AppendChild(rotation_Z);
root.AppendChild(elmNew);
             xmlDoc.AppendChild(root);
             xmlDoc.Save(filepath);
Debug.Log("AddXml OK!");
}
}

 

運行結果

C#
1
2
3
4
5
6
7
8
9
10
11
12
<transforms>
  <rotation id="1000" name="momo">
    <x>0</x>
    <y>1</y>
    <z id="1">update00000</z>
  </rotation>
  <rotation id="1" name="yusong">
    <x id="1">0</x>
    <y>1</y>
    <z>2</z>
  </rotation>
</transforms>

 

4.刪除XML

C#
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
public void deleteXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;
foreach(XmlElement xe in nodeList)
{
if(xe.GetAttribute("id")=="1")
{
xe.RemoveAttribute("id");
}
foreach(XmlElement x1 in xe.ChildNodes)
{
if(x1.Name == "z")
{
x1.RemoveAll();
}
}
}
xmlDoc.Save(filepath);
Debug.Log("deleteXml OK!");
}
}

 

運行結果

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<transforms>
  <rotation id="1000" name="momo">
    <x>0</x>
    <y>1</y>
    <z>
    </z>
  </rotation>
  <rotation name="yusong">
    <x id="1">0</x>
    <y>1</y>
    <z>
    </z>
  </rotation>
</transforms>

 

4.解析與輸出上面的XML

C#
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
public void showXml()
{
string filepath = Application.dataPath + @"/my.xml";
if(File.Exists (filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNodeList nodeList=xmlDoc.SelectSingleNode("transforms").ChildNodes;
//遍歷每一個節(jié)點,,拿節(jié)點的屬性以及節(jié)點的內容
foreach(XmlElement xe in nodeList)
{
Debug.Log("Attribute :" + xe.GetAttribute("name"));
Debug.Log("NAME :" + xe.Name);
foreach(XmlElement x1 in xe.ChildNodes)
{
if(x1.Name == "y")
{
Debug.Log("VALUE :" + x1.InnerText);
}
}
}
Debug.Log("all = " + xmlDoc.OuterXml);
}
}

 

運行結果(點擊圖片最大化)

Unity3D研究院之使用 C#合成解析XML與JSON(四十一) - 雨松MOMO程序研究院 - 2

 

接著是處理JSON

5.解析JSON字符串顯示字典鍵值

C#
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
public void ResolveJson()
{
                 //定義的JSON字符串,注意JSON的格式
string str = @"
            {
                ""Name""     : ""yusong"",
                ""Age""      : 26,
                ""Birthday"" : ""1986-11-21"",
""Thumbnail"":[
{
           ""Url"":    ""http://"",
           ""Height"": 256,
           ""Width"":  ""200""
},
{
           ""Url"":    ""http://baidu.com"",
           ""Height"": 1024,
           ""Width"":  ""500""
}
]
            }";
//這里是解析,,包括整形與字符串
JsonData jd = JsonMapper.ToObject(str);
Debug.Log("name = " + (string)jd["Name"]);
Debug.Log("Age = " + (int)jd["Age"]);
Debug.Log("Birthday = " + (string)jd["Birthday"]);
JsonData jdItems = jd["Thumbnail"];
for (int i = 0; i < jdItems.Count; i++)
{
Debug.Log("URL = " + jdItems[i]["Url"]);
Debug.Log("Height = " + (int)jdItems[i]["Height"]);
         Debug.Log("Width = " + jdItems[i]["Width"]);
}
}

 

運行結果

Unity3D研究院之使用 C#合成解析XML與JSON(四十一) - 雨松MOMO程序研究院 - 3

 

6.合成JSON字符串,,先合成 然后在輸出。

C#
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
public void MergerJson()
{
StringBuilder sb = new StringBuilder ();
        JsonWriter writer = new JsonWriter (sb);
        writer.WriteObjectStart ();
writer.WritePropertyName ("Name");
        writer.Write ("yusong");
writer.WritePropertyName ("Age");
        writer.Write (26);
writer.WritePropertyName ("Girl");
writer.WriteArrayStart ();
writer.WriteObjectStart();
writer.WritePropertyName("name");
        writer.Write("ruoruo");
        writer.WritePropertyName("age");
        writer.Write(24);
writer.WriteObjectEnd ();
writer.WriteObjectStart();
writer.WritePropertyName("name");
        writer.Write("momo");
        writer.WritePropertyName("age");
        writer.Write(26);
writer.WriteObjectEnd ();
writer.WriteArrayEnd();
writer.WriteObjectEnd ();
Debug.Log(sb.ToString ());
JsonData jd = JsonMapper.ToObject(sb.ToString ());
Debug.Log("name = " + (string)jd["Name"]);
Debug.Log("Age = " + (int)jd["Age"]);
JsonData jdItems = jd["Girl"];
for (int i = 0; i < jdItems.Count; i++)
{
Debug.Log("Girl name = " + jdItems[i]["name"]);
Debug.Log("Girl age = " + (int)jdItems[i]["age"]);
}
}

 

運行結果

Unity3D研究院之使用 C#合成解析XML與JSON(四十一) - 雨松MOMO程序研究院 - 4

工程下載: http://vdisk.weibo.com/s/jkBml

雨松MOMO祝大家學習愉快,,哈哈哈,。

 

雨松MOMO提醒您:親,,如果您覺得本文不錯,快快將這篇文章分享出去吧 。另外請點擊網站頂部彩色廣告或者捐贈支持本站發(fā)展,,謝謝,!

5

最后編輯:
作者:雨松MOMO
專注移動互聯(lián)網,Unity3D游戲開發(fā)
捐 贈如果您愿意花10塊錢請我喝一杯咖啡的話,請用手機掃描二維碼即可通過支付寶直接向我捐款哦,。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多