首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图理解为什么简单的jsonix解编组失败

试图理解为什么简单的jsonix解编组失败
EN

Stack Overflow用户
提问于 2016-05-04 16:36:00
回答 1查看 545关注 0票数 2

我对jsonix很陌生,最感兴趣的是使用它来还原xml数据。我写了一个非常基本的测试示例,但是没有成功。

代码语言:javascript
复制
var MyModule = {
    name: 'MyModule',
    typeInfos: [{
        type: 'classInfo',
        localName: 'AnyElementType',
        propertyInfos: [{
            type: 'anyElement',
            allowDom: true,
            allowTypedObject:true,
            name: 'any',
            collection: false
        }]
    }],
    elementInfos: [{
        elementName: 'sos:Capabilities',
        typeInfo: 'MyModule.AnyElementType'
    }]
  };

  var context = new Jsonix.Context([MyModule], {namespacePrefixes:  {'http://www.opengis.net/sos/2.0':'sos'}});
  var unmarshaller = context.createUnmarshaller();
  var data = unmarshaller.unmarshalString('<sos:Capabilities version=\"2.0.0\">hello</sos:Capabilities>');
  return data;

我硬编码了一个具有名称空间并包含测试xml的“hello”的简单元素。我对通用解组的“任意元素映射”感兴趣。在创建上下文时,我觉得自己配置了名称空间,等等,但是我仍然得到以下错误:元素sos:Capabilities无法解组,因为在这个上下文中不知道,而且属性不允许DOM内容。有什么想法?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 19:17:34

免责声明:,我是Jsonix的作者。

这里有两个问题。

首先,您在XML中缺少了xmlns:sos="http://www.opengis.net/sos/2.0"

其次,当前需要将元素名定义为具有namespaceURIlocalPart的对象。如果您只使用字符串,Jsonix将使用defaultElementNamespaceURI (这里没有定义)。namespacePrefixes选项目前不在elementInfos中应用。这将是一个很好的功能,如果您想要这个,请提出问题

这是一个带有模块的工作JSFiddle

代码语言:javascript
复制
var MyModule = {
  name: 'MyModule',
  typeInfos: [{
    type: 'classInfo',
    localName: 'AnyElementType',
    propertyInfos: [{
      type: 'anyElement',
      allowDom: true,
      allowTypedObject: true,
      name: 'any',
      collection: false
    }]
  }],
  elementInfos: [{
    elementName: {
      namespaceURI: 'http://www.opengis.net/sos/2.0',
      localPart: 'Capabilities'
    },
    // 'sos:Capabilities',
    typeInfo: 'MyModule.AnyElementType'
  }]
};

var context = new Jsonix.Context([MyModule], {
  namespacePrefixes: {
    'http://www.opengis.net/sos/2.0': 'sos'
  }
});
var unmarshaller = context.createUnmarshaller();
var data = unmarshaller.unmarshalString('<sos:Capabilities version=\"2.0.0\" xmlns:sos=\"http://www.opengis.net/sos/2.0\">hello</sos:Capabilities>');
console.log(data);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37033419

复制
相关文章

相似问题

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