【问题标题】:How to translate XML to JSON?如何将 XML 转换为 JSON?
【发布时间】:2011-06-01 15:44:43
【问题描述】:

作为毕业的一部分,我必须将 XML 文件迁移到 CouchDB。将文件的结构转换为 JSON 完全没有问题,但有一部分我不知道如何实际转换:

<p>We beg to send us immediately [...] <note>
  <p>In the original, [...]</p>
</note><lb/><add>by post</add> one copy of 
<title>A Book</title> by <persName>
  <choice><abbr>Mrs.</abbr><expan>Misses</expan></choice>Jane Smith</persName>.
As soon<lb/> we know the <choice>
                    <sic>prize</sic>
                    <corr>price</corr>
                </choice>the amount [...]<lb/> by post.<lb/>
</p>

我想坚持使用 JSON,不要在 JSON 中使用 XML,因为那时我需要在我的程序中实现 XML 功能。

什么是这个问题的“最佳实践”或解决方案?

【问题讨论】:

  • 这真的应该在stackoverflow上。
  • @TheLQ:同意,但我的programmers.SE 帐户没有足够的代表来投票。 ;-\
  • @Brad 您可以改为标记问题,直到您有足够的代表投票结束。
  • @AnnaLear:我确实做到了,只是习惯了比旗帜更重。 ;p

标签: xml json porting


【解决方案1】:

以下将起作用,但可以使用 PITA。表示每个标签如下:

{
  attr => {...},
  tag => "...",
  content => [...]
}

content 作为文本数组(在标签之外)或其他标签。

忽略空格和缩进,你的 sn-p 会变成这样:

{
  tag => "p",
  content => [
    "We beg to send us immediately [...]",
    {
      tag => "note",
      content => [
        {
          tag => "p",
          content => [ "In the original, [...]" ]
        }
      ]
    },
    { tag => "lb" },
    {
      tag => "add",
      content => [ "by post" ],
    },
    " one copy of ",
    {
      tag=> "title",
      content => [ "A Book" ],
    },
    " by ",
    {
      tag => "persName",
      content => [
        {
          tag => "choice",
          content => [ ... ]
        }
      ],
    },
    ...
  ]
}

(我厌倦了表达它,对不起。)

请注意,数据结构非常重复和冗长。但是您将以编程方式处理 JSON,因此数据结构完全可预测且有规律是非常有用的。

【讨论】:

  • 这看起来确实很痛苦。但这是一个好的开始,谢谢!
【解决方案2】:

使用Unicode简化anonymous block boxes的转换:

JSON.stringify({"domelement": 
     {
     "p": "We beg to send us immediately [...]",
    "note": {"p":"In the original, [...]"}, 
    "add": "by post \u0022one copy of\u0022", 
    "title": "A Book \u0022by\u0022",
    "choice": [{"abbr":"Mrs."}, {"expan":"Misses \u0022Jane Smith\u0022 \u0022As soon\u0022 \u0022we know the\u0022"}],
    "choice": {"sic":"prize"},
    "corr": "price \u0022the amount [...]\u0022"
    }
 })

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2017-11-24
    • 2014-11-11
    • 1970-01-01
    相关资源
    最近更新 更多