首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google脚本中的Jsonix

Google脚本中的Jsonix
EN

Stack Overflow用户
提问于 2018-08-14 15:52:27
回答 3查看 167关注 0票数 0

如何在Google脚本(服务器端的Google自动化)中使用Jsonix?如果不能,我可以在GAS中使用什么替代Jsonix来从XSD生成Javascript映射,然后将JS对象序列化为XML以提交到REST,然后反序列化响应返回到JS对象中?

我使用Jsonix从XSD文件编译REST到JSON映射。我在命令行Node.js中测试了OK --一个Javascript,它从内联JSON中创建一个JS对象,然后在Jsonix.Context下将其封送至REST,然后解除对响应的封送。

然后我用我的脚本创建了一个Google脚本项目。我用Jsonix.js脚本(作为Jsonix.gs)创建了另一个GAS项目,然后用映射脚本(作为API.gs)创建了另一个GAS项目。我用Jsonix和API库的项目密钥配置了主脚本的项目资源。我可以执行我的脚本(验证使用了库资源),但是当调用Jsonix.createDocument()时它会失败。我在Jsonix脚本的_jsonix_factory = function(_jsonix_xmldom, _jsonix_xmlhttprequest, _jsonix_fs)开头插入了一个记录_jsonix_xmldom: undefinedLogger.log("_jsonix_xmldom: " + _jsonix_xmldom)行,这就是Jsonix.createDocument()抛出错误而不是返回文档的原因。

我能否在GAS环境中使用Google脚本服务XmlService或其他服务,而不是默认情况下Jsonix所期望的_jsonix_xmldom?或者,我可以将一些功能相当的库作为库资源吗?或者以其他方式在气体中向Jsonix提供这种功能?

我希望Jsonix尝试使用同样未定义的_jsonix_xmlhttprequest_jsonix_fs值时也会产生类似的错误。我在Jsonix.js (.gs)源代码中看到了// REWORK // Node.jscreateDocument()声明和其他地方的两行代码。也许我报告的这个案子正在积极发展呢?

谢谢你的见解。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-23 19:07:37

最后,我创建了新的Google脚本项目,用于Jsonix、其XMLDOM依赖项以及我从API的XSD文件中生成的API映射JS (GAS)。我使GAS Jsonix项目依赖于我的XMLDOM项目作为库资源。然后,我为我的主要脚本创建了一个GAS项目,它依赖于Jsonix GAS项目和API GAS项目作为库资源。它起作用了。

我使用了一个现有的、经过良好测试的XMLDOM项目,并使用了适当的FOSS许可证,并对其进行了调整,以满足GAS的要求。

我尝试使用GAS XmlService,包装它的API,将其相关成员表示为DOMImplementation、DOMParser和XMLSerializer,但是XmlService API与XMLDOM非常不一致。与标准DOM实现对应的XmlService API成员的结构与标准API完全不一致。

票数 0
EN

Stack Overflow用户

发布于 2018-08-14 15:59:56

基于github上的jsonix.js源代码,看起来您需要进行大量的工作才能让它在github中运行。XMLDOM和document对象根本不存在于GAS环境中,您需要修改jsonix以使用Apps脚本提供的XmlService和UrlFetchApp服务。

请注意,尽管jsonix看起来很不错,但它的结构似乎是为了处理不同的环境,它绝不是不可能的,甚至是很难添加气体支持的。

票数 0
EN

Stack Overflow用户

发布于 2018-08-14 21:18:30

我是Jsonix的作者。

我不知道什么是“谷歌应用程序脚本”。可以肯定的是,这不是“积极发展”的事情。

Jsonix支持Node.js和浏览器环境OOTB。工厂函数_jsonix_factory只接收环境需要提供的依赖项。如果不提供依赖项,则某些特性将无法工作。

目前有三种依赖关系:

  • xmldom
  • xmlhttprequest
  • fs

fs是完全可选的。如果不提供fs,您将无法处理文件--像unmarshalFile这样的方法将无法工作。没有冲浪没什么大不了的。

只有在非浏览器环境中要从URL解析时才需要xmlhttprequest。没有它,unmarshalURL将无法工作(在非浏览器环境中)。

xmldom在非浏览器环境中提供DOM解析器。Jsonix使用DOM解析XML,所以要么需要浏览器提供的DOM,要么提供xmldom作为依赖项。这一点很关键,否则Jsonix根本无法工作。

基本上,您真正需要的是xmldom。它将用于:

  • xmldom.DOMImplementation
  • xmldom.XMLSerializer
  • xmldom.DOMParser

GAS有DOM实现吗?如果是,则很可能可以将其作为依赖项传递给_jsonix_factory。如果没有,对不起,什么也做不了。

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

https://stackoverflow.com/questions/51845377

复制
相关文章

相似问题

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