Validation XML XSD模式验证工具

Validation XML XSD模式验证工具,validation,xsd,Validation,Xsd,有人知道用XSD模式验证XML的命令行工具吗?在“工具”下,您应该找到适合您需要的工具。我想它是在VDL上的。xmllint来自 在C#中 //xsv.cs // ------------------------------------------------------------------ // //根据架构验证XML文档。 // //上次保存: //时间戳: // --------------------------------------------------------------

有人知道用XSD模式验证XML的命令行工具吗?

在“工具”下,您应该找到适合您需要的工具。我想它是在VDL上的。

xmllint来自

在C#中

//xsv.cs
// ------------------------------------------------------------------
//
//根据架构验证XML文档。
//
//上次保存:
//时间戳:
// ------------------------------------------------------------------
//
//Dino Chiesa版权所有(c)2010
//版权所有!
//
// ------------------------------------------------------------------
使用制度;
使用System.Collections.Generic;
使用System.Xml;
使用System.Xml.Schema;
运用系统反思;
[assembly:AssemblyTitle(“Cheeso.Tools.XmlSchemaValidator”)]
[汇编:AssemblyDescription(“Xml模式验证器”)]
[程序集:程序集配置(“”)]
[大会:大会公司(“Dino Chiesa”)]
[组装:组装产品(“工具”)]
[大会:大会版权所有(“版权所有©Dino Chiesa 2010”)]
[组装:组装商标(“”)]
[大会:大会文化(“”)
[组件:组件版本(“1.1.1.1”)]
命名空间Cheeso.Tools
{
公共类XmlSchemaValidator
{
字符串xsdfile;
字符串xmlfile;
私有void Validate()
{
列表验证错误=新建列表();
List validationWarnings=新列表();
操作处理程序=(对象,参数)=>{
if(args.Severity==XmlSeverityType.Warning)
validationWarnings.Add(args.Message);
其他的
validationErrors.Add(args.Message);
};
XmlTextReader tr=新的XmlTextReader(_xmlfile);
XmlReaderSettings设置=新的XmlReaderSettings
{
ValidationType=ValidationType.Schema
};
settings.Schemas.Add(null,xsdfile);
settings.ValidationEventHandler+=
新的ValidationEventHandler(处理程序);
XmlReader=XmlReader.Create(tr,设置);
XmlDocument xdoc=新的XmlDocument();
xdoc.Load(读卡器);
//检查结果
如果(validationErrors.Count>0)
{
validationErrors.ForEach(Console.WriteLine);
WriteLine(“根据该模式,XML文档无效。”);
}
其他的
{
如果(validationWarnings.Count>0)
{
validationWarnings.ForEach(Console.WriteLine);
}
WriteLine(“根据该模式,XML文档是有效的。”);
}
}
公共静态无效用法()
{
WriteLine(“\nxsv:根据XML架构验证XML文档。\n”);
Console.WriteLine(“用法:\n xsv”);
系统环境退出(0);
}
公共XmlSchemaValidator(字符串[]args)
{
for(int i=0;i
mono-xmltool,请参阅

比如说

mono-xmltool --validate-xsd schema.xsd doc.xml

有没有办法避免必须指定模式?(因为它已经在XML本身中指定为
xsi:schemaLocation
…)-使用指定的XML验证模式的有效选项,但我认为--模式也是必需的。问题是命令行工具您发布了这个示例,但将“保留所有权利”放在顶部??
// xsv.cs
// ------------------------------------------------------------------
//
// Validate an XML document against a schema.
//
// last saved:
// Time-stamp: <2010-May-06 00:28:44>
// ------------------------------------------------------------------
//
// Copyright (c) 2010 by Dino Chiesa
// All rights reserved!
//
// ------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Reflection;

[assembly: AssemblyTitle("Cheeso.Tools.XmlSchemaValidator")]
[assembly: AssemblyDescription("Xml Schema Validator")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Dino Chiesa")]
[assembly: AssemblyProduct("Tools")]
[assembly: AssemblyCopyright("Copyright © Dino Chiesa 2010")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.1.1")]

namespace Cheeso.Tools
{
    public class XmlSchemaValidator
    {
        String _xsdfile;
        String _xmlfile;

        private void Validate()
        {
            List<String> validationErrors = new List<String>();
            List<String> validationWarnings = new List<String> ();

            Action<object, ValidationEventArgs> handler = (obj, args) => {
                if (args.Severity==XmlSeverityType.Warning)
                    validationWarnings.Add(args.Message);
                else
                    validationErrors.Add(args.Message);
            };

            XmlTextReader tr = new XmlTextReader(_xmlfile);

            XmlReaderSettings settings = new XmlReaderSettings
                {
                    ValidationType = ValidationType.Schema
                };

            settings.Schemas.Add(null, _xsdfile);
            settings.ValidationEventHandler +=
                new ValidationEventHandler(handler);

            XmlReader reader = XmlReader.Create(tr, settings);


            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(reader);

            // Check results
            if (validationErrors.Count > 0)
            {
                validationErrors.ForEach(Console.WriteLine);
                Console.WriteLine("The XML document is not valid, according to that Schema.");
            }
            else
            {
                if (validationWarnings.Count > 0)
                {
                    validationWarnings.ForEach(Console.WriteLine);
                }

                Console.WriteLine("The XML document is valid, according to that Schema.");
            }
        }


        public static void Usage()
        {
            Console.WriteLine("\nxsv: validate an XML document against an XML Schema.\n");
            Console.WriteLine("Usage:\n  xsv <xmldoc> <xmlschema>");
            System.Environment.Exit(0);
        }


        public XmlSchemaValidator (string[] args)
        {
            for (int i=0; i < args.Length; i++)
            {
                if (args[i] == "-h" ||
                    args[i] == "--help" ||
                    args[i] == "-?")
                {
                    Usage();
                }


                if (_xmlfile == null)
                    _xmlfile = args[i];
                else if (_xsdfile == null)
                    _xsdfile = args[i];
                else
                    Usage();
            }

            // default values
            if (_xmlfile == null ||  _xsdfile == null)
                Usage();
        }


        public static void Main(string[] args)
        {
            try
            {
                new XmlSchemaValidator(args)
                    .Validate();
            }
            catch (System.Exception exc1)
            {
                Console.WriteLine("Exception: {0}", exc1.ToString());
                Usage();
            }
        }

    }

}
mono-xmltool --validate-xsd schema.xsd doc.xml