如何使用XML输入变量以根据XSD进行验证
How to input a variable with XML to validate against XSD
我有这段代码来使用XSD验证XML文件。这个代码有效!
var schemaFile = new Packages.java.io.File("C:''schema.xsd");
var url = new Packages.java.net.URL("file:C:''input.xml");
var xmlFile = new Packages.javax.xml.transform.stream.StreamSource(url);
var schemaFactory = Packages.javax.xml.validation.SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
var schema = schemaFactory.newSchema(schemaFile);
var validator = schema.newValidator();
try {
validator.validate(xmlFile);
logger.info('valid');
} catch (err) {
logger.error(err.toString());
}
但现在,不再使用XML文件作为输入
var xmlFile = new Packages.javax.xml.transform.stream.StreamSource(url);
我想使用一个之前传递的变量,其中有一个XML
var xmlFile = new Packages.javax.xml.transform.stream.StreamSource(msg);
我得到一个错误协议
JavaException: java.net.MalformedURLException: no protocol:
这是因为StreamSource需要一个指定的协议,对于文件来说很容易(文件:路径)。如何将变量而不是文件放在那里?
javax.xml.transform.stream.StreamSource
可以从URL、InputStream或Reader构建。如果msg
是您的xml。使用该字符串创建一个StringReader,并用它实例化StreamSource
。
您可以使用SAXSource
类,它有一个接受InputSource
参数的构造函数。
有一个InputSource
构造函数接受Reader
参数,因此您可以使用该构造函数并使用StringReader
实现。
代码中:
var reader = new Packages.java.io.StringReader(msg);
var source = new Packages.org.xml.sax.InputSource(reader);
var xmlFile = new Packages.javax.xml.transform.sax.SAXSource(source);
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 在javascript/Jquery中根据XSD验证XML
- 在客户端使用 JavaScript 针对 XSD 验证 XML
- 是否有适用于 Node.js 的 XSD 验证器
- 如何使用XML输入变量以根据XSD进行验证