Javascript 将JSON格式化为XML

Javascript 将JSON格式化为XML,javascript,json,xml,Javascript,Json,Xml,我正在努力创建一个将JSON对象转换为XML的通用函数 注意:标题和正文中的列数可能会有所不同。此外,我对页脚中的值不感兴趣 我有以下JSON结构: { "header": [ "Room", "Maximum Capacity" ], "footer": null, "body": [ [ "Game Room", "0&qu

我正在努力创建一个将JSON对象转换为XML的通用函数

注意:标题和正文中的列数可能会有所不同。此外,我对页脚中的值不感兴趣

我有以下JSON结构:

{
    "header": [ "Room", "Maximum Capacity" ],
    "footer": null,
    "body": [
        [ "Game Room", "0" ],
        [ "gymnasium", "" ],
        [ "Library", "200" ]
    ]
}
我想格式化:

<root>
  <row>
    <Room>Game Room</Room>
    <MaximumCapacity>0</MaximumCapacity>
  </row>
  <row>
    <Room>gymnasium</Room>
    <MaximumCapacity></MaximumCapacity>
  </row>
 <row>
    <Room>Library</Room>
    <MaximumCapacity>200</MaximumCapacity>
  </row>
</root>

我认为这对你来说是一个很好的挑战,所以我不是给你一个解决方案,只是指出几个提示:

您可以使用JSON.parse从字符串解析JSON 您可以通过使用Object.entries来迭代JSON键/值对,例如Object.entriesjson.forEach[key,value]=>; 您需要一个递归函数,因为json和xml的嵌套可以有多个级别。所以你可能会有这样的情况:
首先,我假设您已经将JSON转换为JavaScript对象

您应该将标题值转换为标记名。这将涉及删除空格,但通常您可能需要做更多的工作,以避免无效的标记名。我将在这里集中讨论空间移除

然后使用DOMParser API创建一个XML文档。这样可以避免XML标记内容中的无效字符陷阱

根据从头数据收集的标记名,迭代主体数据并动态创建XML节点

下面是它的工作原理:

设obj={ 标题:[房间,最大容量], 页脚:空, 正文:[ [游戏室,0], [体育馆], [图书馆,200] ] }; 让tagNames=obj.header.mapname=>name.replace/\s*/g; 让parser=newdomparser; 设xmlDoc=parser.parseFromString,text/xml; 设root=xmlDoc.getElementsByTagNameroot[0]; 对于obj.body的let数据{ 让row=xmlDoc.createElementrow; 对于let i=0;iconsole.logxmlString;那太好了。。。但你还没有尝试过什么?请说明你对此事做了哪些研究,以及你在研究的基础上做了哪些尝试。关于将JSON转换为XML并返回到internet上,有成千上万的工具和文章。感谢您的帮助。我花了几个小时寻找解决办法。因此,当我向社区寻求帮助时,我得到的回应就是这样。如果我没有试过,我就不会寻求帮助。我理解,但是如果你在问题中加入你已经试过的东西,以及你在哪里遇到的困难,你会被问得太多吗?供您参考,downvote按钮上的工具提示显示此问题没有显示任何研究成果。在一个
function jsonToXml(json) {
  return Object.entries(json).map(([key, value]) => {
    if(isArray(value) || isObject(value)) { // TODO: Find out how to check if a variable is an array or object!
      return jsonToXml(value); // TODO: Think about on how wrap the value in the xml tag! 
    }
    return value // TODO: Think about on how wrap the value in the xml tag! 
  });
}