【问题标题】:Validate xml against xsd string针对 xsd 字符串验证 xml
【发布时间】:2013-07-30 03:03:25
【问题描述】:

如何根据字符串形式的多模式 xsd 验证 xml 文件? 我只在运行时从 数据库 中检索了我的 XSD 文件,并且我不想想在文件系统上创建任何文件。所以我必须针对 XSD 字符串 验证 XML。

谢谢

更新: 我的实际问题是将成为文件链接的导入语句和包含语句。我想知道如何处理指向数据库中字符串的导入和包含语句。我的意思是我不能在任何时候创建一个文件。它应该是一个字符串。

【问题讨论】:

  • 无论你认为谁都能做到这一点。 Java、python...任何语言。
  • 大多数语言都可以做到。答案取决于您使用的语言
  • @JohnSaunders 我在这方面找不到任何东西。在使用字符串 xmls 作为输入时可以找到大量程序,但在 import 和 include 语句中没有。你能指出这方面的任何例子或东西吗?同样,我想知道如何将 import 和 include 语句解析为字符串。大多数示例仅处理 xml 字符串输入。

标签: xml validation xsd


【解决方案1】:

嗨,我做了这个小例子。

我认为它可以进行优化,但它为您提供了解决方案的全局想法。 :-)

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;

import org.xml.sax.SAXException;

public class xsd {


    /**
     * @param args
     */
    public static void main(String[] args) {

        String xsd = "Your XSD";
        String xsd2 = "2nd XSD";

        InputStream is = new ByteArrayInputStream(xsd.getBytes());
        InputStream is2 = new ByteArrayInputStream(xsd2.getBytes());

        SchemaFactory sf = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);

        Source source = new StreamSource(is);
        Source source2 = new StreamSource(is2);

        try {
            sf.newSchema(new Source[]{source,source2});
        } catch (SAXException e) {
            e.printStackTrace();
        }
    }
}

【讨论】:

  • 对于从 String 到 InputStream 的转换,我使用了这篇文章:stackoverflow.com/questions/247161/…
  • 感谢您的回复。请检查我在帖子上的更新。我可以轻松地将文件作为字符串读取,但我需要的是导入语句和包含语句。如何将导入和包含映射到字符串而不是文件链接。
猜你喜欢
  • 1970-01-01
  • 2018-03-09
  • 2020-01-20
  • 1970-01-01
  • 2018-01-02
  • 2012-09-04
  • 2012-09-20
  • 2011-10-12
  • 2011-07-18
相关资源
最近更新 更多