首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过JSON获取XML属性

通过JSON获取XML属性
EN

Stack Overflow用户
提问于 2015-07-15 09:41:49
回答 1查看 50关注 0票数 2

我正在使用ClusterPoint数据库,并且我导入了包含标签和属性的XML文档:

代码语言:javascript
复制
<db>
  <document>
    <id>1</id>
    <name lang="en">John</name>
    <name lang="ru">Джон</name>
  </document>
  <document>
    <id>2</id>
    <name lang="en">Bill</name>
    <name lang="ru">Билл</name>
  </document>
</db>

当我使用JSON RestAPI检索我的文档时,我得到了以下内容:

代码语言:javascript
复制
"documents": [
{
  "id": "1",
  "name": [
    "John",
    "Джон"
  ]
},
{
  "id": "2",
  "name": [
    "Bill",
    "Билл"
  ]
}]

有没有可能以某种方式获取属性?

EN

回答 1

Stack Overflow用户

发布于 2015-07-15 17:45:54

前段时间我也遇到了同样的问题。如果(到目前为止)还没有办法在JSON中获取属性,我也不会感到惊讶,因为文档中没有列出这样的场景。

这不仅仅是有类似问题的聚集点。例如,如果您需要特定的XML,使用simplexml将其加载到PHP中,然后将其编码为JSON,则属性也将被删除。XML不能映射到JSON 1:1,模棱两可的东西需要特别小心,否则就会被丢弃。没有关于如何转换的足够信息

代码语言:javascript
复制
<name lang="en">John</name>
<name lang="ru">Джон</name>

而且在如何做事情上没有一个共同的标准。很明显,这应该导致数组。但是如何构建它呢?我们可以将每个元素转换为对象,然后将对象存储在数组中。但是,应该给值什么键呢?类似这样的事情可能是合理的:

代码语言:javascript
复制
{ "name": [
    {"lang": "en", "name": "John"},
    {"lang": "ru", "name": "Джон"}
]}

但是我们再一次遇到了问题,很难将数据转换回来,因为我们不知道这是否来自属性。我们可以使用不同的设置:

代码语言:javascript
复制
{ "name": [
    {"@lang": "en", "name": "John"},
    {"@lang": "ru", "name": "Джон"}
]}

那么@将表明这来自attribute。或者像这样:

代码语言:javascript
复制
{ "name": [
    {"@lang": "en", "#value": "John"},
    {"@lang": "ru", "#value": "Джон"}
]}

指示#value始终保存标记中的值。总而言之,看起来目前还没有办法在JSON中获取属性。如果有-来自Clusterpoint的男孩/女孩应该在他们的文档中添加详细的信息。然而,如果真的没有办法获得属性,那么我打赌在未来的版本中,将会有一些记录在案的标准供Clusterpoint使用。

虽然没有文档标准说明Clusterpoint如何处理XML属性到JSON的转换,但您确实需要属性--只要使用XML即可。或者,如果需要JSON,可以将文档重塑为不需要属性的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31420115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档