【发布时间】:2016-02-23 23:22:21
【问题描述】:
我有一个使用相当广泛的基于 XML 的数据存储的脚本,目前我没有对 XML 进行真正的验证,这正在成为一个问题,因为 XML 目前也是人工编辑的。 在短期内,我想验证 XML 不仅是有效的 XML,而且是用于我的目的的有效数据。最终我还想修改 XML,例如将数据从属性移动到节点。在两者之间,我想允许两者,当我加载 XML 时,我可以查找一个也可以是属性的节点,并在需要时将该属性分配给新创建的节点(在内存中)。 从概念上讲,至少对于验证而言,模式显然是正确的答案。但是,似乎模式不能支持其他需求,将属性临时映射到节点,并最终实际更改 XML、创建节点、从属性分配值、删除属性并保存回 XML 文件。 我的想法是我应该创建一个 XML 文件来映射所有这些。首先定义什么是“有效”XML,我现在可以在代码中使用它来验证我的其他 XML。然后我可以将其扩展为也将属性映射到新节点并使用它在摄取时创建这些节点,因此我的工作代码可以使用基于节点的 XML,而文件 XML 仍然是属性。稍后我可以添加代码来修改 XML 文件。 所有这些都是大量的工作,所以我在这里要求确保这个过程长期确实有意义。如果 PowerShell 或 XML Schemas 已经提供了一种很好的方法来做到这一点而无需所有额外的代码,我不想自己动手。
而且,假设我自己的滚动是答案,我很好奇一个实现细节。目前我加载 XML,然后在使用点,即各种“任务”函数,我将该 XML 读入变量,然后我修改和使用(扩展令牌以创建最终文件路径等)。或者,我可以直接在内存中修改 XML 本身,我很好奇是否出于性能原因使用一种方法而不是另一种方法?额外的变量意味着额外的内存使用,但它们都是函数变量,因此它们最终会被垃圾收集。总的 XML 最多可以达到几 Kbs,所以我的感觉是性能不是要关注的问题,易于编码是,但由于我没有找到真正好的方法来分析 PowerShell 性能,我只是猜测.
【问题讨论】:
标签: xml powershell xsd xml-validation