问题标签 [canonicalization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何在 javascript 中规范化 XML?
是否有支持Exclusive XML Canonicalization的 XML 规范化 JavaScript 库?
如果没有相应的库,我如何以最低要求(无 Ruby 或 Java)在 Node.js 库中规范化 XML?
java - 在 JAVA 5 中生成规范 XML 的库?
我正在使用org.apache.xml.security.c14n.Canonicalizer
这里向我推荐的:Sort xml attributes for pretty print using javax.xml.transform.Transformer。不过,我需要它在 Java 5 中运行.. 它似乎不起作用。
有什么选择吗?
mysql - 在 MySQL 中使用单个 UPDATE 规范化字段
有没有办法使用单个查询执行更新以规范化字段?
例子:
c - 如何转换到 使用 libxml(将空元素转换为开始-结束标记对)
在生成 XML 内容时,我得到一个空节点<node/>
,我希望它是<node></node>
. (由于<node></node>
是 c14n 的正确形式,所以进度称为“将空元素转换为起始标签对”)
我应该如何转换它?
Jim Garrison(谢谢)暗示了一种方法来做到这一点,通过使用 xmlBufferCreate、xmlSaveToBuffer、xmlSaveDoc、xmlSaveClose 和 xmlSaveOption:XML_SAVE_NO_EMPTY
java - Android XML 规范化
我正在尝试规范化我从 android 设备上的服务器收到的一些 xml。不过,Android 似乎并不喜欢org.apache.xml.security.c14n.Canonicalizer.canonicalize(String inputText)
. 这是因为 Android 的 DOM 库不喜欢DocumentBuilder.setValidating()
(被 Canonicalizer 使用),它会自动抛出异常。我尝试直接从 Canonicalizer 复制代码,而没有那个麻烦的行:
但是,这无法正确规范化它,xml 标记内的属性不会重新排序为首先具有命名空间,因为它应该。
有没有其他方法可以在 android 上实际规范化 xml?
xml - 如何确定要从算法 URI 创建的对象的类别
由于对我施加的规范,我编写了自己的 C# 代码来签署 XML,并验证签署的 XML。很像 SignedXml 类,但这样我更灵活,例如是否使用 XML 命名空间前缀(似乎 SignedXml 不喜欢签名 XML 中的命名空间前缀,但我的 XML 规范说我必须拥有它们),并且在签名算法(规范现在说 sha256)。
一切似乎都有效,但困扰我的一个“不完美”是 - 例如 - 在验证 xml 时,我需要使用特定类别的对象来转换或验证数据,而我所要做的只是指定的算法 URI在 XML 中。一个例子是规范化:如果 XML 说"http://www.w3.org/2001/10/xml-exc-c14n#"
我知道我可以使用XmlDsigExcC14NTransform
该类,但我的问题是:有没有办法从这样的 URI(或任何 URI)到特定的对象类?
我现在使用我已知的 URI 列表和它们引用的对象类(我认为)(或将其与已知对象类列表的算法属性进行比较,例如XmlDsigExcC14NTransform.Algorithm
),这并不是我真正喜欢的。
canonicalization - 在 xades4j 中使用 ALGO_ID_C14N11_OMIT_COMMENTS
我需要使用 ALGO_ID_C14N11_OMIT_COMMENTS 和 ALGO_ID_C14N11_WITH_COMMENTS 规范化来签署我的文档。你能告诉我我应该对 xades4j 进行什么更改以允许这样做吗(只需要 xades_bes 和 xades_t,现在还没有验证)。
我应该像已经存在的那样在 xades4j.algorithms 中创建一个包装类吗?接着?
php - PHP DOMNode::C14N() 省略根元素的第二个命名空间
我正在尝试验证使用 XMLDSig 签名的 XML 消息。为了创建消息摘要,我需要先规范化消息。它工作正常,除了 DOMNode::C14N() 从下面的代码中删除了第二个命名空间:
规范化上述 XML 会产生以下 XML:
我正在测试的远程服务器在计算消息摘要时会保留此名称空间,因此验证显然会失败。我通过在创建自己的摘要之前先重新添加命名空间来确认此问题,以与消息中嵌入的摘要进行比较(在发布之前,签名已从上面的 XML 代码中剥离)。然而,代码必须与不同的服务器一起使用,其中一些可能会或可能不会添加命名空间(它们不是规范的一部分,但据我所知,只是添加一个冗余的命名空间声明不应该受到伤害)。我在W3C XML C14N 规范中查找了这个他们说根元素应该始终保留它们的命名空间,除了空的默认命名空间。消失的命名空间既不是默认的,也不是空的,所以我不确定这是否是 DOMNode::C14N() 中的一个错误,或者我是否忽略了一些重要的东西。
.htaccess - 使用 FQDN(TLD 后的点)将 URL 重定向到与 PQDN 等效的 URL
许多网站都可以通过FQDN访问(即,在 TLD 上附加一个点):
- https://www.ebay.com./
- https://www.google.com./
- https://www.reddit.com./
- https://stackoverflow.com./
- https://en.wikipedia.org./wiki/Main_Page
有些网站无法通过这种方式访问,但我现在找不到示例。¹ ²
是否可以在.htaccess
文件中将所有带有点后缀的变体重定向到没有的变体?
理想情况下使用“通配符”规则,这样您就不必明确列出域(无需编辑即可在不同的站点/域上使用它)。
重定向示例:
http://example.com./
→<br>http://example.com/
http://example.com./foo
→<br>http://example.com/foo
http://sub.example.com./bar.html
→<br>http://sub.example.com/bar.html
¹ stackoverflow.com,当通过 HTTP 访问时,会给出 HTTP 错误 400:“Bad Request - Invalid Hostname”。
² Wikipedia,当通过 HTTPS 访问时(当它仍然是可选的)时,用于给出证书错误:“证书仅对以下名称有效:*.wikipedia.org
,wikipedia.org
(错误代码:ssl_error_bad_cert_domain)
java - XOM 规范化耗时过长
我有一个 1GB 大的 XML 文件。我正在使用 XOM 来避免 OutOfMemory 异常。
我需要规范化整个文档,但规范化需要很长时间,即使对于 1.5 MB 的文件也是如此。
这是我所做的:
我有这个示例 XML 文件,我通过复制 Item 节点来增加文档的大小。
我用于规范化的代码如下:
尽管此代码适用于小文件,但在我的开发环境(4gb ram,64bit,eclipse,windows)上,1.5mb 文件的规范化部分需要大约 7 分钟
任何指向此延迟原因的指针都非常感谢。
PS。我需要对整个 XML 文档以及整个文档本身的段进行规范化。因此,使用文档本身作为论据对我不起作用。
最好的