问题标签 [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.
ruby - Nokogiri::XML::document canonicalize 方法返回空字符串
我想通过使用 nokogiri 来获得一段 xml 的规范化版本,尽管它的规范化方法返回一个空字符串。
有人知道我在做什么错吗?我正在使用 Nokogiri 1.6.7
msxml - MSXML 和规范 XML
有没有一种使用 MSXML6 规范化 XML 的好方法?
我有一个加载到 IXMLDOMDocument 对象中的 XML 文档。我需要对文档执行诸如唱歌或散列之类的操作。我想把它变成 XML 规范的形式,一个 la C14N或类似的标准。IXMLDOMDocument 有一个保存到文件的方法,但我不认为它首先规范化它,也没有真正提供任何旋钮来控制它如何写入文件。有 MXXMLWriter60 可以让您控制一些东西,如缩进、编码格式等,但它似乎并不具备完成 C14N 标准的所有功能。.net 框架有 XmlDsigC14NTransform ,这似乎很不错,但显然不能从我在堆栈中的位置使用。似乎 MSXML 确实对 XMLDSIG 有一些支持,因此代码应该规范化内容,但它没有公开任何内容。
有什么建议么?
vb.net - 未定义错误类型“XmlDsigC14NTransform”
我的代码以:
但是当我尝试使用 C14N 规范化我的 XML 文档时:
我收到一个错误:
代码 BC30002 类型“XmlDsigC14NTransform”未定义
我之前使用过相同的代码,没有错误。我正在使用目标框架 .NET Framework 4 客户端配置文件,我是否可能缺少参考?
python - 将 ElementTree 编写为规范化的 XML (c14n)
xml.etree
Python API 中的 ElementTree 类有一个write()
记录可选method
参数的方法:
至少在 Python 3.5(在 Fedora 25 上)使用这种方法编写
只是抛出一个ValueError:
ElementTree 代码包含以下注释:
这到底是什么意思?
如何在 Python 中将 ElementTree 序列化为 c14n XML 文件?
xml - xmllint 规范化不是对元素和所有子元素进行排序
我们如何使用 xmllint c14n 选项对以下输出进行排序。
我尝试了以下选项,但我没有看到这里发生任何排序。我期望对所有元素和子元素进行排序。
xmllint c14n
xmllint --exc-c14n
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 参数,但它不接受它。
xml - 使用 PowerShell 规范化 XML 文件
PowerShell(或 PowerShell 可以使用的 .NET 中)是否有内置机制允许我规范化 XML 文件(请参见下面的步骤 2)?
规范化必须基于https://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments中描述的 W3C 规则,但必须有一种方法可以在 .NET 中执行此操作,而无需手动执行这些规则。
我的用例如下:
- 创建 XML 文件的 DOM 表示
- 创建 DOM 的规范化表示
- 使用 SHA-256 生成规范化表示的数字签名。
- 将二进制签名编码为 base64 编码字符串
- 在 SOAP 消息中放置签名字符串
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 中的错误,以及是否有解决方法。
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:Data
Ref="http://another_site.com" Key="value"
php - 为什么不在 nojejs xml-c14n 中使用规范化器 XML
我在 XML 中遇到问题,当我需要一个元素子项在 Nodejs 中包含 Parent 的属性时。现在只有在child canonicalized中显示的属性是xmlns,但是,例如,有属性xmlns:ns1,xmlns:types,这些属性在函数canonicalize之后的子元素中没有。
我不能在 Node 中搜索函数/库,为我做这个。
在 PHP 中,我可以使用函数 C14N 来做到这一点。
在PHP中我有:
输入:
PHP代码:
输出:
不能在NodeJs ( xml-c14n ) 中工作:
输出:
我得到的结果不正确,对我的问题有什么建议吗?