{"id":5919,"date":"2024-12-31T17:17:03","date_gmt":"2024-12-31T09:17:03","guid":{"rendered":"https:\/\/blog.qdac.cc\/?p=5919"},"modified":"2024-12-31T17:17:03","modified_gmt":"2024-12-31T09:17:03","slug":"%e3%80%90%e6%95%99%e7%a8%8b%e3%80%91%e5%b0%86-xml-%e5%86%85%e5%ae%b9%e8%bd%ac%e6%8d%a2%e4%b8%ba-json-%e6%a0%bc%e5%bc%8f","status":"publish","type":"post","link":"https:\/\/blog.qdac.cc\/?p=5919","title":{"rendered":"\u3010\u6559\u7a0b\u3011\u5c06 XML \u5185\u5bb9\u8f6c\u6362\u4e3a JSON \u683c\u5f0f"},"content":{"rendered":"\n<p><strong>\u3010\u58f0\u660e\u3011<\/strong>\u6b64\u4ee3\u7801\u4ec5\u662f\u53c2\u8003\u793a\u4f8b\uff0c\u5b9e\u9645\u53ef\u80fd\u6839\u636e\u5b9e\u9645\u7684\u6570\u636e\u683c\u5f0f\u8fdb\u884c\u989d\u5916\u7684\u5904\u7406\u3002\u56e0\u4e3a XML \u6ca1\u6709\u7c7b\u578b\u4fe1\u606f\uff0c\u6240\u4ee5\u8fd9\u91cc\u751f\u6210JSON\u5168\u4e3a\u5b57\u7b26\u4e32\u7c7b\u578b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>procedure Xml2Json(AParent: TQXML; AJson: TQJson; AEncodeAttrs: Boolean);\nvar\n  I, J: Integer;\n  AChildXml: TQXML;\n  Attr: TQXMLAttr;\n  AChildJson: TQJson;\n  function IsTextNode(ANode:TQXML):Boolean;\n  var\n    I:Integer;\n  begin\n    Result:=true;\n    if ANode.NodeType=xntNode then\n    begin\n      for I := 0 to ANode.Count-1 do\n      begin\n        if ANode&#91;I].NodeType=xntNode then\n          Exit(False);\n      end;\n    end;\n  end;\nbegin\n  for I := 0 to AParent.Count - 1 do\n  begin\n    AChildXml := AParent&#91;I];\n    AChildJson := AJson.Add(AChildXml.Name);\n    if not IsTextNode(AChildXml) then\n    begin\n      Xml2Json(AChildXml, AChildJson, AEncodeAttrs);\n      if AEncodeAttrs then\n      begin\n        for J := 0 to AChildXml.Attrs.Count - 1 do\n        begin\n          Attr := AChildXml.Attrs&#91;J];\n          AChildJson.Add(Attr.Name).AsString := Attr.AsString;\n        end;\n      end;\n    end\n    else\n      AChildJson.AsString := AChildXml.Text;\n  end;\nend;<\/code><\/pre>\n\n\n\n<p><strong>\u3010\u793a\u4f8b\u3011<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>procedure TForm2.Button1Click(Sender: TObject);\nvar\n  AXml: TQXML;\n  AJson: TQJson;\nbegin\n  AXml := TQXML.Create;\n  with AXml.Add('root') do\n  begin\n    Add('item1').Text := '1000';\n    Add('item2').AddText('this is text');\n    Attrs.Add('attr1').AsString := 'idm';\n  end;\n  AJson := AcquireJson;\n  Xml2Json(AXml, AJson, true);\n  Memo1.Text := AJson.AsJson;\n  ReleaseJson(AJson);\n  FreeAndNil(AXml);\nend;<\/code><\/pre>\n\n\n\n<p>\u751f\u6210JSON\u6548\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"root\":{\n    \"item1\":\"1000\",\n    \"item2\":\"this is text\",\n    \"attr1\":\"idm\"\n  }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u3010\u58f0\u660e\u3011\u6b64\u4ee3\u7801\u4ec5\u662f\u53c2\u8003\u793a\u4f8b\uff0c\u5b9e\u9645\u53ef\u80fd\u6839\u636e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8,9,7,52],"tags":[42,560,57],"class_list":["post-5919","post","type-post","status-publish","format-standard","hentry","category-delphi","category-qdac","category-qjson","category-qxml","tag-json","tag-xml","tag-57"],"views":1330,"_links":{"self":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/5919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5919"}],"version-history":[{"count":1,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/5919\/revisions"}],"predecessor-version":[{"id":5920,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/5919\/revisions\/5920"}],"wp:attachment":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}