问题标签 [c14n]

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.

0 投票
1 回答
377 浏览

ruby - Nokogiri::XML::document canonicalize 方法返回空字符串

我想通过使用 nokogiri 来获得一段 xml 的规范化版本,尽管它的规范化方法返回一个空字符串。

有人知道我在做什么错吗?我正在使用 Nokogiri 1.6.7

0 投票
1 回答
244 浏览

msxml - MSXML 和规范 XML

有没有一种使用 MSXML6 规范化 XML 的好方法?

我有一个加载到 IXMLDOMDocument 对象中的 XML 文档。我需要对文档执行诸如唱歌或散列之类的操作。我想把它变成 XML 规范的形式,一个 la C14N或类似的标准。IXMLDOMDocument 有一个保存到文件的方法,但我不认为它首先规范化它,也没有真正提供任何旋钮来控制它如何写入文件。有 MXXMLWriter60 可以让您控制一些东西,如缩进、编码格式等,但它似乎并不具备完成 C14N 标准的所有功能。.net 框架有 XmlDsigC14NTransform ,这似乎很不错,但显然不能从我在堆栈中的位置使用。似乎 MSXML 确实对 XMLDSIG 有一些支持,因此代码应该规范化内容,但它没有公开任何内容。

有什么建议么?

0 投票
1 回答
178 浏览

vb.net - 未定义错误类型“XmlDsigC14NTransform”

我的代码以:

但是当我尝试使用 C14N 规范化我的 XML 文档时:

我收到一个错误:

代码 BC30002 类型“XmlDsigC14NTransform”未定义

我之前使用过相同的代码,没有错误。我正在使用目标框架 .NET Framework 4 客户端配置文件,我是否可能缺少参考?

0 投票
1 回答
1206 浏览

python - 将 ElementTree 编写为规范化的 XML (c14n)

xml.etreePython API 中的 ElementTree 类有一个write()记录可选method参数的方法:

至少在 Python 3.5(在 Fedora 25 上)使用这种方法编写

只是抛出一个ValueError:

ElementTree 代码包含以下注释:

这到底是什么意思?

如何在 Python 中将 ElementTree 序列化为 c14n XML 文件?

0 投票
0 回答
1421 浏览

xml - xmllint 规范化不是对元素和所有子元素进行排序

我们如何使用 xmllint c14n 选项对以下输出进行排序。

我尝试了以下选项,但我没有看到这里发生任何排序。我期望对所有元素和子元素进行排序。

xmllint c14n

xmllint --exc-c14n

0 投票
1 回答
1434 浏览

python - lxml - TypeError: write() got an unexpected keyword argument 'default_namespace'

下面是一个最小的工作示例。我已经用 Python 3.4、Python 3.6 32 位和 Python 3.6 64 位对此进行了测试。

结果:

我刚刚将 lxml 版本升级到 4.0.0。(但同样是 3.7 的问题。)

我需要使用 C14N 方法导出,并且(尽管未包含在示例中)我还需要指定需要以生成的规范形式出现的命名空间列表。例如,我也必须使用 inclusive_ns_prefixes 参数。

更新:实际上,这似乎是 Python 内置 xml 模块的问题,而不是 lxml。

这是我正在调用的方法:

https://github.com/python/cpython/blob/master/Lib/xml/etree/ElementTree.py#L721

它确实有一个 short_empty_elements 参数,但它不接受它。

0 投票
0 回答
223 浏览

xml - 使用 PowerShell 规范化 XML 文件

PowerShell(或 PowerShell 可以使用的 .NET 中)是否有内置机制允许我规范化 XML 文件(请参见下面的步骤 2)?

规范化必须基于https://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments中描述的 W3C 规则,但必须有一种方法可以在 .NET 中执行此操作,而无需手动执行这些规则。

我的用例如下:

  1. 创建 XML 文件的 DOM 表示
  2. 创建 DOM 的规范化表示
  3. 使用 SHA-256 生成规范化表示的数字签名。
  4. 将二进制签名编码为 base64 编码字符串
  5. 在 SOAP 消息中放置签名字符串
0 投票
0 回答
883 浏览

c# - SignedXml 进行的错误规范化 (c14n) - 它删除了换行符 () - 它是 .NET 错误吗?

我们正在从使用 java 的第三方接收签名的 xml。我们的 .NET 实现正确验证签名,除非 xml 包含 字符参考。

看起来 .NET 在 c14n 过程中的某处删除了换行符。

我在 c# 中使用下一个 xml 运行了一些测试:

使用 c14n 的下一个代码:

将产生下一个 xml,它符合w3org规范(每行以 LF 字符结尾):

但是,当使用下一个代码查看哪个规范表单具有使用 SignedXml .NET 类签名的 xml 时:

将产生不同的 xml(每行以 LF char 结尾),我们可以看到换行符 ( ) 已被删除:

有没有办法使用 SignedXml 类以便使用正确的规范形式?xml 解析(创建 XmlDocument 时)可能是导致此问题的原因吗?

我想知道这是否是 .NET 中的错误,以及是否有解决方法。

0 投票
1 回答
295 浏览

python-2.7 - 在python中不使用tostring提取xml的一部分

假设我有一个这样的 XML 代码:

在此之后还有几行。我已经使用解析了 xml ET.parse(FILENAME),然后使用write_c14n("new.xml"). 我现在想将这个 new.xml 的一部分提取到另一个 xml 文件中,我只想要从 开始<na:Data xmlns:na="http://some_site.com#" Ref="http://another_site.com" Key="value">和结束的部分</h>

但是,我不想使用tostring()它,因为它不保留通过 using 获得的 xml 的规范化write_c14n()。我想知道是否仅从 new.xml 复制该部分并将其写入另一个 xml 是否会有所帮助,但我想它会在两者之间添加一些额外的新行,并且也不会保留 xml 的格式。

我尝试了以下方法:

通过这种方式,我尝试使用新根创建另一个 xml <na:Data xmlns:na="http://some_site.com#" Ref="http://another_site.com" Key="value">

我只需要 new_tree 的对象,所以我可以将它用作 new_tree。tostring()但是,如果我使用[ie print ]打印上面的 new_tree,etree.tostring(root_tree,pretty_print=True)这就是我得到的输出:

正如你所看到的,它的键和值 ( ) 都na:Data被替换了。我需要一种可以提取部分 xml 的方法,因为它具有所有属性、键和值。ns0:DataRef="http://another_site.com" Key="value"

0 投票
0 回答
162 浏览

php - 为什么不在 nojejs xml-c14n 中使用规范化器 XML

我在 XML 中遇到问题,当我需要一个元素子项在 Nodejs 中包含 Parent 的属性时。现在只有在child canonicalized中显示的属性是xmlns,但是,例如,有属性xmlns:ns1,xmlns:types,这些属性在函数canonicalize之后的子元素中没有。

我不能在 Node 中搜索函数/库,为我做这个。

在 PHP 中,我可以使用函数 C14N 来做到这一点。

PHP中我有:

输入

PHP代码

输出

不能在NodeJs ( xml-c14n ) 中工作:

输出

我得到的结果不正确,对我的问题有什么建议吗?