`

C# 实现XSD对XML的check处理

 
阅读更多

生命如果可以停止,我希望它永远的停留在那一刻

 

好了言归正传,用C#实现一下XSD对XML的check处理

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace XmlCheckMethod
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using System.Xml.Schema;

namespace XmlCheckMethod
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void checkXSD_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "xsd|*.xsd|all file|*.*";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.FilterIndex = 1;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                xsdtxt.Text = openFileDialog.FileName;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ValidateXml(urltxt.Text, xsdtxt.Text);
        }

        public void ValidateXml(string xml, string spath)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            XmlSchemaSet schemaSet = new XmlSchemaSet();
            schemaSet.Add(null, spath);
            settings.Schemas.Add(schemaSet);
            settings.ValidationType = ValidationType.Schema;
            settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);

            XmlReader reader = XmlReader.Create(xml, settings);
            while (reader.Read()) ;
            MessageBox.Show("***Validation Success");
            Application.Exit();
        }

        private static void ValidationEventHandler(object sender, ValidationEventArgs args)
        {
            MessageBox.Show("***Validation error");
            Application.Exit();
        }

        private void openXml_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "xml|*.xml|all file|*.*";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.FilterIndex = 1;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                urltxt.Text = openFileDialog.FileName;
            }
        }
    }
}

  

namespace XmlCheckMethod
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.OpenXsd = new System.Windows.Forms.Button();
            this.urltxt = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.xsdtxt = new System.Windows.Forms.TextBox();
            this.openXml = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // OpenXsd
            // 
            this.OpenXsd.Location = new System.Drawing.Point(268, 43);
            this.OpenXsd.Name = "OpenXsd";
            this.OpenXsd.Size = new System.Drawing.Size(75, 23);
            this.OpenXsd.TabIndex = 0;
            this.OpenXsd.Text = "OpenXsd";
            this.OpenXsd.UseVisualStyleBackColor = true;
            this.OpenXsd.Click += new System.EventHandler(this.checkXSD_Click);
            // 
            // urltxt
            // 
            this.urltxt.Location = new System.Drawing.Point(12, 12);
            this.urltxt.Name = "urltxt";
            this.urltxt.Size = new System.Drawing.Size(250, 19);
            this.urltxt.TabIndex = 1;
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(364, 27);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(92, 23);
            this.button1.TabIndex = 2;
            this.button1.Text = "CheckValidation";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // xsdtxt
            // 
            this.xsdtxt.Location = new System.Drawing.Point(12, 45);
            this.xsdtxt.Name = "xsdtxt";
            this.xsdtxt.Size = new System.Drawing.Size(250, 19);
            this.xsdtxt.TabIndex = 3;
            // 
            // openXml
            // 
            this.openXml.Location = new System.Drawing.Point(268, 12);
            this.openXml.Name = "openXml";
            this.openXml.Size = new System.Drawing.Size(75, 23);
            this.openXml.TabIndex = 4;
            this.openXml.Text = "openXml";
            this.openXml.UseVisualStyleBackColor = true;
            this.openXml.Click += new System.EventHandler(this.openXml_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(477, 76);
            this.Controls.Add(this.openXml);
            this.Controls.Add(this.xsdtxt);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.urltxt);
            this.Controls.Add(this.OpenXsd);
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "CheckXSD";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Button OpenXsd;
        private System.Windows.Forms.TextBox urltxt;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.TextBox xsdtxt;
        private System.Windows.Forms.Button openXml;
    }
}

 

<?xml version="1.0" encoding="utf-8" ?>
<Order>
	<OrderID>10248</OrderID>
	<OrderDate>2009-01-01</OrderDate>
	<Details>
		<OrderItem>
			<ItemNumber>1</ItemNumber>
			<ProductID>1</ProductID>
			<Quantity>2</Quantity>
			<UnitPrice>20</UnitPrice>
		</OrderItem>
		<OrderItem>
			<ItemNumber>1</ItemNumber>
			<ProductID>1</ProductID>
			<Quantity>2</Quantity>
			<UnitPrice>20</UnitPrice>
		</OrderItem>
		<OrderItem>
			<ItemNumber>1</ItemNumber>
			<ProductID>1</ProductID>
			<Quantity>2</Quantity>
			<UnitPrice>20</UnitPrice>
		</OrderItem>
		<OrderItem>
			<ItemNumber>1</ItemNumber>
			<ProductID>1</ProductID>
			<Quantity>2</Quantity>
			<UnitPrice>20</UnitPrice>
		</OrderItem>
	</Details>
</Order>

 

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="OrderSchema"
    targetNamespace="http://tempuri.org/OrderSchema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/OrderSchema.xsd"
    xmlns:mstns="http://tempuri.org/OrderSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
	<xs:element name="Order">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="OrderID" type="xs:integer"></xs:element>
				<xs:element name="OrderDate" type="xs:date"></xs:element>
				<xs:element name="Details">
					<xs:complexType>
						<xs:group ref="OrderItemGroup" minOccurs="1" maxOccurs="unbounded"></xs:group>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:group name="OrderItemGroup">
		<xs:sequence>
			<xs:element name="OrderItem">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="ItemNumber" type="xs:integer"></xs:element>
						<xs:element name="ProductID" type="xs:integer"></xs:element>
						<xs:element name="Quantity" type="xs:double"></xs:element>
						<xs:element name="UnitPrice" type="xs:double"></xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:group>
</xs:schema>

 

 

0
3
分享到:
评论

相关推荐

    通过xsd产生C#实体类解析XML或生成XML

    总的来说,通过XSD文件生成C#实体类是.NET开发中一种实用的技术,它简化了XML数据的处理,并提供了强大的数据验证机制。只要正确理解和使用,就可以在项目中实现高效的数据交换和序列化。在实际开发中,应结合具体...

    xsd生成xml工具

    在IT行业中,XML(eXtensible Markup Language)是一种用于标记数据的标准格式,而XSD(XML Schema Definition)则是用于定义XML...通过深入研究其源代码,开发者可以增强对XML Schema和XML处理的理解,提升自身技能。

    C#验证xml是否满足xsd规则

    2. **C#中的XML处理**: 在C#中,可以使用System.Xml命名空间下的类来处理XML,如XmlDocument、XmlNodeReader、XPathNavigator等。这些类提供了读取、写入和操作XML文档的方法。 3. **XSD验证**: - 使用`...

    xml文件转xsd文件

    4. **验证XML文件**:使用XSD文件对XML文件进行验证,确保XML符合XSD定义的规则。可以使用XML解析器或者命令行工具如`xmllint`来进行验证。 5. **生成Java类**:利用JAXB或其他类似的工具,如Apache CXF的XJC,根据...

    XML验证器(XSD验证XML)

    在Delphi7中实现XML验证器,首先需要导入XML处理库,如MSXML或IXMLDOMDocument。然后,你可以加载XML文档和对应的XSD模式,通过调用相应的验证方法进行验证。如果XML文档符合XSD模式,验证器将返回成功;否则,它会...

    XML生成XSD的方法

    2. **定制XSD文件**:如果您希望自定义生成的XSD文件名或者输出路径,可以通过添加额外参数来实现: ```plaintext xsd.exe test.xml /schema:customSchema.xsd ``` 上述命令将生成一个名为`customSchema.xsd`的...

    Xsd转换xml

    C#中,.NET Framework提供了System.Xml.Schema命名空间,其中的类可以实现相同的功能。Python中,可以使用lxml库来实现这个转换。 转换过程通常包括以下步骤: 1. 加载XSD文件:首先,我们需要读取并解析XSD文件,...

    利用xsd校验xml

    在处理XML文档时,为了确保数据的准确性和一致性,我们常常会使用XSD(XML Schema Definition)来校验XML文档。XSD提供了一种形式化的语言,用于定义XML文档的结构和数据类型。 在标题“利用xsd校验xml”中,我们...

    java生成xsd,xml示例

    通过阅读和理解这些代码,你可以更好地掌握在Java环境下处理XML和XSD的方法。 总结起来,Java生成XML和XSD涉及到XML和XSD的基本概念,以及使用JAXB等Java库进行XML操作的技术。在实际项目中,理解并熟练运用这些...

    xml 文件与xsd文件的转化以及xsd验证xml的合法性

    XML(Extensible Markup Language)是一种用于标记...理解和掌握XML与XSD之间的转化和验证方法,对于处理和维护基于XML的数据至关重要。在实际编程中,合理运用这些知识可以提高代码质量,减少因数据错误导致的问题。

    根据XSD检查XML并修复

    程序都还能保证对XML的更改使其满足XSD中规定的元素和属性。 也可以试试其他的XML文件,关于产生XML对应的XSD文件,可以从这个网址上转换一下: http://www.freeformatter.com/xsd-generator.html 我的做法是: 1 ...

    xml生成xsd工具

    xml生成xsd 使用方法:java -jar trang.jar EchoRequest.xml EchoRequest.xsd

    使用jaxb根据xsd生成xml文档

    **使用JAXB根据XSD生成XML文档** 在Java开发中,XML文档的生成与解析是一项常见的任务,特别是在处理数据交换和存储时。JAXB(Java Architecture ...了解并熟练掌握这一流程,能够极大地提高XML处理的效率和准确性。

    用XSD完成xml有效性的验证

    在VS2005中,我们可以使用C#语言来实现XSD对XML的验证。C#提供了丰富的类库,如System.Xml和System.Xml.Schema,这些类库可以帮助我们方便地进行XML和XSD的相关操作。 首先,我们需要创建一个XSD文件,定义XML文档...

    XSD使用dom4j校验XML

    DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...

    C#使用xsd文件验证XML格式是否正确的实现方法

    在C#编程中,验证XML文件的格式是否符合预定义的模式是非常重要的,这可以通过使用XSD(XML Schema Definition)文件来实现。XSD文件定义了一组规则,用于描述XML文档的结构和数据类型,从而确保XML数据的有效性和...

    验证XSD和XML文件的小工具

    验证xml文件与xsd是否匹配

    c#中使用xsd文件、使用SOAP协议相关资料

    当你需要在C#项目中使用XSD文件时,可以使用`XmlReader`和`XmlReaderSettings`类来实现XML文档的验证。以下是如何使用这些类来根据XSD模式验证XML数据的步骤: 1. 创建`XmlReaderSettings`对象:这是配置XML读取器...

    在XSD指导下创建XML,不是生成示例xml

    总的来说,XSD为XML文档提供了一套严谨的定义,使得在IETM系统和其他应用中创建和处理XML数据时能保证数据的完整性和一致性。通过解析和利用XSD,我们可以构建出强大的编辑工具,有效地支持XML文档的生成和编辑。

Global site tag (gtag.js) - Google Analytics