问题标签 [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.

0 投票
1 回答
2209 浏览

xml - 具有包容性规范化的 XML 数字签名

我正在尝试实现 XML 数字签名的例程,并且能够正确计算要签名的信息的哈希值。但是,我面临签名本身的问题,因为我无法创建要签名的真实字符串。

现在我有这个:

仅使用 CR 而不是 CRLF。没有用于缩进的空格(帖子显示标签之间有空格的地方,有一个 CR)

计算有效签名的任何建议?

PD 我已将规范化算法更改为 EXCLUSIVE 并且它可以工作,但要求是使用 INCLUSIVE。

提前非常感谢。

0 投票
2 回答
707 浏览

java - 如何在 Java 中规范化 WSDL 文件?

我需要找出两个 WSDL 文件的不同之处。我开始像这里一样漂亮地打印它们,但我看到complexType在定义的两个文件中(无论出于何种愚蠢的原因)以不同的顺序有相同的东西(例如s)。我想进一步规范化文件,以便以后可以使用标准之类diff的东西来查找差异。

不知道是否有为 WSDL 定义的规范形式,我知道有Canonical XML,但我需要更进一步,对所有顺序无关紧要的东西进行排序。

0 投票
2 回答
3280 浏览

java - 我使用番石榴的理想缓存

在过去的几周里,我断断续续地尝试使用番石榴的MapMaker找到我理想的缓存实现。请在此处此处查看我之前的两个问题,以了解我的思考过程。

根据我所学到的,我的下一次尝试是放弃软值,转而使用 maximumSize 和 expireAfterAccess:

在哪里

但是,我仍然在努力解决的一个剩余问题是,一旦对象的时间到了,即使对象是可强烈访问的,此实现也会驱逐对象。这可能会导致具有相同 UID 的多个对象在环境中浮动,这是我不希望的(我相信我想要实现的目标被称为规范化)。

所以据我所知,唯一的答案是有一个额外的地图,它作为一个内部人,我可以检查一个数据对象是否仍在内存中:

并且加载函数将被修改:

但是,使用两个映射而不是一个映射来缓存似乎效率低下。有没有更复杂的方法来解决这个问题?一般来说,我是否以正确的方式进行此操作,还是应该重新考虑我的缓存策略?

0 投票
1 回答
882 浏览

c# - 在 C# 中使用带有默认命名空间的 Xpath 进行规范化

我正在尝试将 C14N 转换应用于一些生成的 XML。看来我不能使用 LINQ 来检索节点以执行规范化,所以我必须使用 DOM 去“老派”,但我认为我违反了默认命名空间。

这是我的代码示例。

还有我的 XML:

我已经阅读了该地区的其他一些主题并遇到了这个Gem,但它并没有解决问题。

使用 XPath Visualiser 显示应选择所需的节点,但我的代码无法选择任何节点。

0 投票
1 回答
1787 浏览

c# - XML 规范化在转换后的输出中返回空元素

我有一篇相关的帖子询问如何使用 XPath 语句从 XmlDocument 中选择节点。

我可以让 SelectNodes 工作的唯一方法是创建一个非默认命名空间“x”,然后在 XPath 语句中显式引用节点。

虽然这可行并为我提供了一个节点列表,但规范化随后无法为输出中我选择的节点生成任何内容。

我尝试使用 XmlDsigExcC14NTransform 并指定命名空间,但这会产生相同的输出。

下面是生成的 xml 输出示例(使用我相关帖子中的 XML ):

0 投票
1 回答
4094 浏览

java - 手动创建所有 Document 节点的 NodeList

我目前手动生成NodeList所有文档节点(按文档顺序)。得到这个的 XPath 表达式NodeList

我第一次尝试手动遍历 DOM 并收集节点(NodeSet是委托给 a 的原始NodeList实现List):

我会通过调用walkRecursive(doc, nodes)where docis theorg.w3c.Documentnodesa (yet empty)来开始递归NodeSet

我使用这个原始 XML 文档对此进行了测试:

例如,如果我将手动创建NodeSet的和NodeList由最初提到的 XPath 表达式生成的规范化,并逐字节比较这两个字节,那么结果是相等的,并且似乎工作得很好。

但是,如果我遍历这两个NodeLists 并打印调试信息(typeString只需生成一个字符串表示)

然后我收到 XPath 生成的输出NodeList

这对于手动生成的NodeList

因此,如您所见,在第一个示例中,NodeList 还包含NodeXML 命名空间:

现在我的问题:

a)如果我正确解释了xml-names11,那么我不需要 xmlns:xml 声明:

前缀 xml 根据定义绑定到命名空间名称http://www.w3.org/XML/1998/namespace。它可以,但不需要,被声明,并且不能被未声明或绑定到任何其他命名空间名称。其他前缀不得绑定到此名称空间名称,并且不得将其声明为默认名称空间。

我对么?(至少 c)暗示那个方向)

b) 但是,为什么 XPath 评估还是要添加它——它不应该只包括一开始就存在的东西,而不是自动添加东西吗?

c) 这可能会导致XML 规范化出现问题,尽管它不应该xml-在规范化期间应该省略命名空间的声明。有谁知道出错的(Java)实现?


编辑:

这是我用来评估包含“xml”命名空间节点的 XPath 表达式的代码:

0 投票
1 回答
7065 浏览

java - 如何在 Java 中实现规范化映射?

我目前正在滚动我自己的小 ORM,并且发现自己面临着创建规范化映射的任务,以防止从数据库中多次加载相同的实体。

我目前的方法是使用HashMap<Object, WeakReference<Object>>. 键是映射数据库实体的主键(ArrayList<Object>如果它是复合键),值为WeakReference<Object>.

我的主要问题是如何清理地图?当不再使用对象时,映射中的弱引用将消失null,我只会在下一次查找时发现它(或者永远不会,如果我不再查找该对象)。我可以让弱引用ReferenceQueue在它们被清除时注册,然后每次查找时检查该队列。清除的引用不会给我任何关于哪个对象被清除的提示,所以我想我必须子类WeakReference化以将键存储在映射中,所以我可以在清除引用后删除它。

这是要走的路,还是有更简单的方法来实现它?

0 投票
1 回答
134 浏览

xml - 管道两个萨克斯解析器?

我有以下实现任务,我不知道如何解决它。

我们有一个基于 SAX的 xml 格式语法检查器,它检查某个结束 endElement() 中的哈希和。这个hashsum是使用一种过滤 InputStream构建的,它在读取内容时更新 MessageDigest。SAX-syntaxchecker 使用这个输入流作为它的 InputSource。

问题(我的任务)是,hashsum 应该建立在输入 xml 的一些规范化部分上(参见http://www.w3.org/TR/xml-c14n)。

现在棘手的事情是:我们有一个Canonicalizer,它也使用 SAX来规范化输入。(它需要知道当前上下文来区分属性和节点等,这就是我们使用 SAX 的原因)

我想重用那个 Canonicalizer,但我看不出如何组合这两个 SAX 解析器。

我想我想要某种流水线:

InputFile -> Canonicalizer -> HashCalculation-InputStream -> SyntaxChecker。

任何想法/参考如何做到这一点?TIA。

0 投票
1 回答
154 浏览

php - 将 URL 与规范化/规范化匹配

我发现这个解决方案可以规范化和匹配相等的 URL,但我想知道是否有更优雅的方法,PHP 没有 URL 规范化功能吗?

0 投票
1 回答
428 浏览

perl - 尝试在 XML::LibXML 中规范化 XML 片段时出错

我正在尝试规范化 XML 片段以避免在生成的 XML 中打印自闭合节点。(由于消费系统的限制,我希望对节点<test />进行流式传输)。<test></test>

我尝试在 XML::LibXML::Node 中使用 toStringC14N() 方法来实现相同的目的,但我遇到了以下错误,我似乎也没有从谷歌那里得到任何帮助。

输出:

我只能追查错误,直到 LibXML.c 中的以下方法

xmlDocDumpMemory(self, &result, &len);

我对我做错了什么一无所知,因为“toString()”似乎工作正常。

我正在使用 perl v5.8.8 & XML::LibXML 1.88 版