-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
using System.Xml;
-
using Newtonsoft.Json;
-
namespace JSonConverter
-
{
-
class Program
-
{
-
static void Main(string[] args)
-
{
-
string xml = "<Test><Name>Test class</Name><X>100</X><Y>200</Y></Test>";
-
XmlDocument doc = new XmlDocument();
-
doc.LoadXml(xml);
-
string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc);
-
Console.WriteLine("XML -> JSON: {0}", json);
-
Console.ReadLine();
-
}
-
}
-
}
json2xml
预定义的Json字符串如上
同理调用Json.Net类库中的方法
XmlDocument doc1 = JsonConvert.DeserializeXmlNode(json);
Console.WriteLine(doc1.OuterXml);
XmlDocument doc2 = JsonConvert.DeserializeXmlNode(json1);
Console.WriteLine(doc2.OuterXml);
http://dotnet.chinaitlab.com/CSharp/927201.html
http://www.tuicool.com/articles/n2Uzya
-
XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), XmlDictionaryReaderQuotas.Max);
-
XmlDocument doc = new XmlDocument();
-
doc.Load(reader);
-
收藏一下吧 以后万一用的到
-
我试了一下,json字符串需要把键加"才行
-
如:{Name:"aaa",Value:1} 这里Name和Value是键这样写法转换的时候报错
-
需要写成
-
{"Name":"aaa","Value":1}
-
这个是第二种方法,这个键加不加"都正常翻译
-
/// <summary>
-
/// json字符串转换为Xml对象
-
/// </summary>
-
/// <param name="sJson"></param>
-
/// <returns></returns>
-
public static XmlDocument Json2Xml(string sJson)
-
{
-
//XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), XmlDictionaryReaderQuotas.Max);
-
//XmlDocument doc = new XmlDocument();
-
//doc.Load(reader);
-
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
-
Dictionary<string, object> Dic = (Dictionary<string, object>)oSerializer.DeserializeObject(sJson);
-
XmlDocument doc = new XmlDocument();
-
XmlDeclaration xmlDec;
-
xmlDec = doc.CreateXmlDeclaration("1.0", "gb2312", "yes");
-
doc.InsertBefore(xmlDec, doc.DocumentElement);
-
XmlElement nRoot = doc.CreateElement("root");
-
doc.AppendChild(nRoot);
-
foreach (KeyValuePair<string, object> item in Dic)
-
{
-
XmlElement element = doc.CreateElement(item.Key);
-
KeyValue2Xml(element, item);
-
nRoot.AppendChild(element);
-
}
-
return doc;
-
}
-
private static void KeyValue2Xml(XmlElement node, KeyValuePair<string, object> Source)
-
{
-
object kValue = Source.Value;
-
if (kValue.GetType() == typeof(Dictionary<string, object>))
-
{
-
foreach (KeyValuePair<string, object> item in kValue as Dictionary<string, object>)
-
{
-
XmlElement element = node.OwnerDocument.CreateElement(item.Key);
-
KeyValue2Xml(element, item);
-
node.AppendChild(element);
-
}
-
}
-
else if (kValue.GetType() == typeof(object[]))
-
{
-
object[] o = kValue as object[];
-
for (int i = 0; i < o.Length; i++)
-
{
-
XmlElement xitem = node.OwnerDocument.CreateElement("Item");
-
KeyValuePair<string, object> item = new KeyValuePair<string, object>("Item", o[i]);
-
KeyValue2Xml(xitem, item);
-
node.AppendChild(xitem);
-
}
-
}
-
else
-
{
-
XmlText text = node.OwnerDocument.CreateTextNode(kValue.ToString());
-
node.AppendChild(text);
-
}
-
}