찾다
백엔드 개발XML/RSS 튜토리얼XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

JOSN简介

在本系列的第一篇已经简单比较了XML和JSON 时光机

JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。

什么是 JSON?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解

JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

JSON格式化

尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性

XML2JOSN

借助第三方类库转换 

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

使用NuGet添加第三方类库

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

<code>string xml = @"<?xml version=&#39;1.0&#39; standalone=&#39;no&#39;?>
<root>
<person id=&#39;1&#39;>
<name>Alan</name>
<url>http://www.google.com</url>
</person>
<person id=&#39;2&#39;>
<name>Louis</name>
<url>http://www.yahoo.com</url>
</person>
</root>";
 
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
 
string jsonText = JsonConvert.SerializeXmlNode(doc);
//{
//  "?xml": {
//    "@version": "1.0",
//    "@standalone": "no"
//  },
//  "root": {
//    "person": [
//      {
//        "@id": "1",
//        "name": "Alan",
//        "url": "http://www.google.com"
//      },
//      {
//        "@id": "2",
//        "name": "Louis",
//        "url": "http://www.yahoo.com"
//      }
//    ]
//  }
//}</code>

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

对于每个表标签的属性对应JSON中的"@"标签名
如果有多个同名标签就会添加到一个数组集合中

其他方式转换

1.使用.NET Framework中的JavaScriptSerializer类

首先需要确保你的工程或服务器支持.NET 4.0或以上版本的Framework,否则无法找到该类。
通过JavaScriptSerializer来实现。它的名字空间为:System.Web.Script.Serialization
如果要使用它,还须添加
System.Web.Extensions库文件引用

<code>  var xml =
                   @"<Columns>
          <Column Name=""key1"" DataType=""Boolean"">True</Column>
          <Column Name=""key2"" DataType=""String"">Hello World</Column>
          <Column Name=""key3"" DataType=""Integer"">999</Column>
        </Columns>";
            var dic = XDocument
                .Parse(xml)
                .Descendants("Column")
                .ToDictionary(
                    c => c.Attribute("Name").Value,
                    c => c.Value
                );
            var json = new JavaScriptSerializer().Serialize(dic);
            Console.WriteLine(json);</code>

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

2.手动编写转换类

<code>  public class Xml2JSON
    {
        public static string XmlToJSON(XmlDocument xmlDoc)
        {
            StringBuilder sbJSON = new StringBuilder();
            sbJSON.Append("{ ");
            XmlToJSONnode(sbJSON, xmlDoc.DocumentElement, true);
            sbJSON.Append("}");
            return sbJSON.ToString();
        }
 
        //  XmlToJSONnode:  Output an XmlElement, possibly as part of a higher array
        private static void XmlToJSONnode(StringBuilder sbJSON, XmlElement node, bool showNodeName)
        {
            if (showNodeName)
                sbJSON.Append("\"" + SafeJSON(node.Name) + "\": ");
            sbJSON.Append("{");
            // Build a sorted list of key-value pairs
            //  where   key is case-sensitive nodeName
            //          value is an ArrayList of string or XmlElement
            //  so that we know whether the nodeName is an array or not.
            SortedList childNodeNames = new SortedList();
 
            //  Add in all node attributes
            if (node.Attributes != null)
                foreach (XmlAttribute attr in node.Attributes)
                    StoreChildNode(childNodeNames, attr.Name, attr.InnerText);
 
            //  Add in all nodes
            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);
            }
 
            // Now output all stored info
            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(" }");
        }
 
        //  StoreChildNode: Store data associated with each nodeName
        //                  so that we know whether the nodeName is an array or not.
        private static void StoreChildNode(SortedList childNodeNames, string nodeName, object nodeValue)
        {
            // Pre-process contraction of XmlElement-s
            if (nodeValue is XmlElement)
            {
                // Convert  <aa></aa> into "aa":null
                //          <aa>xx</aa> into "aa":"xx"
                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;
                }
            }
            // Add nodeValue to ArrayList associated with each nodeName
            // If nodeName doesn&#39;t exist then add it
            object oValuesAL = childNodeNames[nodeName];
            ArrayList ValuesAL;
            if (oValuesAL == null)
            {
                ValuesAL = new ArrayList();
                childNodeNames[nodeName] = ValuesAL;
            }
            else
                ValuesAL = (ArrayList)oValuesAL;
            ValuesAL.Add(nodeValue);
        }
 
        private 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(", ");
        }
 
        // Make a string safe for JSON
        private static string SafeJSON(string sIn)
        {
            StringBuilder sbOut = new StringBuilder(sIn.Length);
            foreach (char ch in sIn)
            {
                if (Char.IsControl(ch) || ch == &#39;\&#39;&#39;)
                {
                    int ich = (int)ch;
                    sbOut.Append(@"\u" + ich.ToString("x4"));
                    continue;
                }
                else if (ch == &#39;\"&#39; || ch == &#39;\\&#39; || ch == &#39;/&#39;)
                {
                    sbOut.Append(&#39;\\&#39;);
                }
                sbOut.Append(ch);
            }
            return sbOut.ToString();
        }
    }</code>

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

JOSN2XML

借助第三方类库转换

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

<code>string json = @"{
   &#39;?xml&#39;: {
     &#39;@version&#39;: &#39;1.0&#39;,
     &#39;@standalone&#39;: &#39;no&#39;
   },
   &#39;root&#39;: {
     &#39;person&#39;: [
       {
         &#39;@id&#39;: &#39;1&#39;,
        &#39;name&#39;: &#39;Alan&#39;,
        &#39;url&#39;: &#39;http://www.google.com&#39;
      },
      {
        &#39;@id&#39;: &#39;2&#39;,
        &#39;name&#39;: &#39;Louis&#39;,
        &#39;url&#39;: &#39;http://www.yahoo.com&#39;
      }
    ]
  }
}";
 
XmlDocument doc = JsonConvert.DeserializeXmlNode(json);
doc.Save(@"D:\json.xml");
// <?xml version="1.0" standalone="no"?>
// <root>
//   <person id="1">
//     <name>Alan</name>
//     <url>http://www.google.com</url>
//   </person>
//   <person id="2">
//     <name>Louis</name>
//     <url>http://www.yahoo.com</url>
//   </person>
// </root></code>

其他方式转换

XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개

위 내용은 XML과 JSON(그래픽 및 텍스트) 간의 변환에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
잘 형성된 XML 마스터 링 : 데이터 교환을위한 모범 사례잘 형성된 XML 마스터 링 : 데이터 교환을위한 모범 사례May 14, 2025 am 12:05 AM

wformedxmliscrucialfordataexchangebecauseItensurescorrectparsingand and underdestandingAcrosssystems.1) 시작된 경사 같은 곳에서 시작합니다

XML : 아직도 사용됩니까?XML : 아직도 사용됩니까?May 13, 2025 pm 03:13 PM

xmlisstillusedduetoitsstructurednature, HumanReadability 및 WideSpreadAdoptioninenterPriseEnvironments.1) ItfacilitatesDataExChangeInsectorsikeFinance (SWIFT) 및 HL7) .2) ITSHUMAN-ReadableFormataIdSinmanualDatainsPectioning.3) XMLISERDEN

RSS 문서의 해부학 : 구조 및 요소RSS 문서의 해부학 : 구조 및 요소May 10, 2025 am 12:23 AM

RSS 문서의 구조에는 세 가지 주요 요소가 포함됩니다 : 1. : RSS 버전 정의 루트 요소; 2. : 제목, 링크 및 설명과 같은 채널 정보를 포함합니다. 3. : 제목, 링크, 설명 등을 포함한 특정 콘텐츠 항목을 나타냅니다.

RSS 문서 이해 : 포괄적 인 가이드RSS 문서 이해 : 포괄적 인 가이드May 09, 2025 am 12:15 AM

RSS 문서는 XML 파일을 통해 컨텐츠 업데이트를 게시하는 간단한 구독 메커니즘입니다. 1. RSS 문서 구조는 여러 요소로 구성되며 요소를 포함합니다. 2. RSS 리더를 사용하여 XML을 구문 분석하여 채널을 구독하고 정보를 추출하십시오. 3. 고급 사용에는 FeedParser 라이브러리를 사용한 필터링 및 정렬이 포함됩니다. 4. 일반적인 오류에는 XML 구문 분석 및 인코딩 문제가 포함됩니다. XML 형식 및 인코딩은 디버깅 중에 확인해야합니다. 5. 성능 최적화 제안에는 캐시 RSS 문서 및 비동기 구문 분석이 포함됩니다.

RSS, XML 및 최신 웹 : 콘텐츠 신디케이션 깊은 다이빙RSS, XML 및 최신 웹 : 콘텐츠 신디케이션 깊은 다이빙May 08, 2025 am 12:14 AM

RSS와 XML은 여전히 ​​최신 웹에서 중요합니다. 1.RSS는 콘텐츠를 게시하고 배포하는 데 사용되며 사용자는 RSS 리더를 통해 구독하고 업데이트를받을 수 있습니다. 2. XML은 마크 업 언어이며 데이터 저장 및 교환을 지원하며 RSS 파일은 XML을 기반으로합니다.

Beyond Basic : XML이 활성화 한 고급 RSS 기능Beyond Basic : XML이 활성화 한 고급 RSS 기능May 07, 2025 am 12:12 AM

RSS를 사용하면 멀티미디어 컨텐츠 임베딩, 조건부 가입 및 성능 및 보안 최적화가 가능합니다. 1) 태그를 통해 오디오 및 비디오와 같은 멀티미디어 컨텐츠를 포함합니다. 2) XML 네임 스페이스를 사용하여 조건부 가입을 구현하여 구독자가 특정 조건에 따라 컨텐츠를 필터링 할 수 있습니다. 3) CDATA 섹션 및 XMLSCHEMA를 통해 RSSFEED의 성능 및 보안을 최적화하여 표준에 대한 안정성과 준수를 보장합니다.

RSS 디코딩 : 웹 개발자를위한 XML 프라이머RSS 디코딩 : 웹 개발자를위한 XML 프라이머May 06, 2025 am 12:05 AM

RSS는 자주 업데이트되는 데이터를 게시하는 데 사용되는 XML 기반 형식입니다. 웹 개발자로서 RSS를 이해하면 콘텐츠 집계 및 자동화 업데이트 기능을 향상시킬 수 있습니다. RSS 구조, 구문 분석 및 생성 방법을 학습하면 RSSFeeds를 자신있게 처리하고 웹 개발 기술을 최적화 할 수 있습니다.

JSON 대 XML : RSS가 XML을 선택한 이유JSON 대 XML : RSS가 XML을 선택한 이유May 05, 2025 am 12:01 AM

RSS는 다음과 같이 JSON 대신 XML을 선택했습니다. 1) XML의 구조 및 검증 기능은 JSON보다 낫습니다. 이는 RSS 복잡한 데이터 구조의 요구에 적합합니다. 2) XML은 당시 광범위하게 지원되었다. 3) RSS의 초기 버전은 XML을 기반으로했으며 표준이되었습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구