【问题标题】:Zipper for creating xml requests?用于创建 xml 请求的拉链?
【发布时间】:2014-01-24 01:26:14
【问题描述】:

如何创建符合XSD 的XML 请求以使请求有效?

一种方法是创建整个请求,然后在XSD 上验证它。 有没有办法在遍历架构时创建请求?

首先想到的是Zipper,但我真的不确定它们是否可以在这里使用。

也许我没有很好地理解它,但是如果已经定义了一些结构并且需要在该结构中进行更改,那么 Zipper 似乎很棒。拉链可以用于改变结构吗? (例如将序列附加到序列数组?)

【问题讨论】:

  • 我倾向于拥有更好的数据结构并序列化好的 xml,而不是事后验证 XML。但是,如果您可以添加一些代码,并了解如何使用拉链,那会有所帮助。
  • 看看 HaXML 包。它有 XsdToHaskell 从 XSD 模式创建 haskell 代码。不完全是您的要求,但可能会有所帮助。
  • @YogeshSajanikar Akshat 不是询问如何验证,而是询问是否可以在遍历 XSD 时直接生成有效的 XML。这大概会带一个拉链,然后像 scan 遍历一个列表一样遍历它,同时输出内容。
  • 我认为这是一个很好的问题。在这里进行深入思考。
  • @enoughreptocomment 这就像尝试通过遍历正则表达式来创建有意义的字符串。那样不行。

标签: xml haskell zipper


【解决方案1】:

正如 Tomalak 在comment 中所说,

这就像尝试通过遍历正则表达式来创建有意义的字符串。那样不行。

拉链可帮助您在结构中漫步,检查零件并选择性地修改它们;最后,您可以选择“拉上”拉链以获得原始版本的修改版本。你的想法至少有两个主要问题:

  1. XSD 的结构与其编码的文档的结构不同,甚至非常相似。如果您要使用 zipper 修改 XSD 以根据该 XSD 生成有效的 XML,您最终将完全重组它,类型系统将无法帮助您正确处理。

  2. 拉链是一种关注某些数据结构的一部分的方法。在你考虑太多拉链之前,你应该考虑一下你要解压缩的数据结构。根据您的工作,您可能会或可能不会发现使用 zipper 有用,但 zipper 及其不变量将始终与结构及其不变量相关。

【讨论】:

    【解决方案2】:

    曾经有机会测试这个工具:camprocessor 它确实有效并生成了有效的 XML 文件,您可以使用数据库中的数据对其进行自定义。

    OASIS 对此有一些指导

    【讨论】:

      【解决方案3】:

      创建一个XMLHttpRequest 对象

      所有现代浏览器(IE7+、Firefox、Chrome、Safari 和 Opera)都有一个内置的 XMLHttpRequest 对象。

      创建XMLHttpRequest 对象的语法:

      xmlhttp=new XMLHttpRequest();
      

      【讨论】:

        猜你喜欢
        • 2020-09-17
        • 2020-08-14
        • 2022-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多