博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# : use xsd 校验 xml
阅读量:6812 次
发布时间:2019-06-26

本文共 2807 字,大约阅读时间需要 9 分钟。

 1 
using System;
 2 
using System.Collections.Generic;
 3 
using System.Linq;
 4 
using System.Text;
 5 
using System.Xml;
 6 
using System.Diagnostics;
 7 
using System.Xml.Schema;
 8 
using System.Xml.Linq;
 9 
10 
namespace XsdValidator
11 {
12     
class Program
13     {
14         
static 
void Main(
string[] args)
15         {
16             
17             
//
Debug.Assert(false);
18 
            InputArgumentParser.Instance.AppName = 
"
XsdValidator
";
19             InputArgumentParser.Instance.Register(
"
xml
"
typeof(String), 
false
false
null);
20             InputArgumentParser.Instance.Register(
"
xsd
"
typeof(String), 
true
true
null);
21             
try
22             {
23                 InputArgumentParser.Instance.ParseInput(args);
24             }
25             
catch (Exception ex)
26             {
27                 Console.Error.WriteLine(
"
Error: 
" + ex.Message);
28                 Console.WriteLine();
29                 InputArgumentParser.Instance.PrintUsage();
30                 
return;
31             }
32             XmlReaderSettings settings = 
new XmlReaderSettings();
33             settings.ValidationType = ValidationType.Schema;
34             
//
http://msdn.microsoft.com/en-us/library/system.xml.schema.xmlschemavalidationflags.aspx
35 
            settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
36             settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
37             settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
38             settings.ValidationFlags |= XmlSchemaValidationFlags.AllowXmlAttributes;
39             String strXmlFile = InputArgumentParser.Instance.GetStringArg(
"
xml
");
40 
41             
foreach (String strXsdFile 
in InputArgumentParser.Instance.GetStringArgArray(
"
xsd
"))
42             {
43                 
//
String strXsdFile = @"c:\temp\unqualified_1.xsd";
44 
                
//
String strXmlFile = @"c:\temp\test1_unqualified.xml";
45 
46                 System.Console.WriteLine(
"
Adding XSD:
" + strXsdFile);
47                 XDocument xdocXSD = XDocument.Load(strXsdFile);
48                 
var e = xdocXSD.Element(XName.Get(
"
{http://www.w3.org/2001/XMLSchema}schema
"));
49                 XAttribute attr = e.Attribute(
"
targetNamespace
");
50 
51                 
string namespaceUrl = 
null;
52                 
if (attr != 
null)
53                     namespaceUrl = attr.Value;
54                 settings.Schemas.Add(namespaceUrl, strXsdFile);
55             }
56             settings.ValidationEventHandler += 
new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);
57 
58             XmlReader reader = XmlReader.Create(strXmlFile, settings);
59             
try
60             {
61                 
while (reader.Read())
62                 {
/*
63 
                    if (reader.IsStartElement())
64 
                    {
65 
                        Console.WriteLine("Begin Element " + reader.Name);
66 
                    }
67 
                  
*/
68                 }
69             }
70             
catch (XmlException ex)
71             {
72                 Console.Error.WriteLine(
"
Error: [
" + ex.Message + 
"
]
");
73             }
74             
finally
75             {
76                 reader.Close();
77             }
78         }
79         
static 
void settings_ValidationEventHandler(
object sender
80             , System.Xml.Schema.ValidationEventArgs e)
81         {
82             Console.Error.WriteLine(e.Severity == XmlSeverityType.Error? 
"
Error
" : 
"
Warning
" + 
"
: [
" + e.Message + 
"
]\n
");
83         }
84     }
//
class
85 
}

转载于:https://www.cnblogs.com/sliencer/archive/2012/03/25/2416717.html

你可能感兴趣的文章
笑话xml结构
查看>>
if....else的基本用法
查看>>
GL_INTERFACE
查看>>
谷歌浏览器保存网页为pdf和.mhtml文件
查看>>
Python源码学习之初始化(三)-PyDictObject的初始化
查看>>
TeeChart设置图表的标题
查看>>
windows CMD命令查看局域网内所有主机名及IP
查看>>
Android WebView 开发详解(二)
查看>>
浏览器窗口 标签 图标 ,添加方法
查看>>
数据库主键外键总结
查看>>
Interaction
查看>>
goquery
查看>>
前端页面性能参数搜集
查看>>
Python操作excel
查看>>
Xtreme9.0 - Car Spark 动态规划
查看>>
加载和使用纹理
查看>>
impala 导出CSV 或excel
查看>>
Nuget控制台 - 给你的快速添加缺少的包
查看>>
ORACLE 使用RMAN管理归档日志 archived log
查看>>
最大流算法
查看>>