我有一个XSD文件(XML文件的架构布局),它对某些字段有限制/枚举。例如。我的属性名为" Car"并且只允许某些值("本田","福特"," GMC","丰田"等)。
是否有一种方法在VBA(或任何其他语言)中使用MSXML和/或DOM XML模型来获得限制(" Honda"," Ford",&#34 ; GMC","丰田"等)来自XSD的属性/节点(" Car")?
理想的最终状态/我的目标是在加载XSD / Map之后编写一个函数,其中节点的xpath位置以字符串格式传递(例如" / Root / Car")和一个字符串返回数组,包含该节点的允许字段!
非常感谢任何见解或参考!
感谢。
答案 0 :(得分:1)
我不知道任何“简单”的解决方案 - 我做了类似于你所描述的但是“手动” - 即写了很多代码。
我能找到的唯一一个类似于这样的库:http://xpath-on-schema.sourceforge.net/,但我实际上没有尝试过,因为它是基于Java的,我是一个.NET人员。
如果您可以在.NET中开发一些东西,我的建议是使用XmlSchema
类:
using (FileStream fs = new FileStream(xsdPath, FileMode.Open, FileAccess.Read)) {
XmlSchema schema = XmlSchema.Read(fs, null);
}
然后有相对容易使用的方法和类来访问模式中需要的所有内容 - 例如有一个类XmlSchemaSimpleTypeRestriction
对应于像字符串这样的简单类型的限制,它在Facets
属性中包含允许值列表(或其他限制)。