生命如果可以停止,我希望它永远的停留在那一刻
好了言归正传,用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>
分享到:
相关推荐
总的来说,通过XSD文件生成C#实体类是.NET开发中一种实用的技术,它简化了XML数据的处理,并提供了强大的数据验证机制。只要正确理解和使用,就可以在项目中实现高效的数据交换和序列化。在实际开发中,应结合具体...
在IT行业中,XML(eXtensible Markup Language)是一种用于标记数据的标准格式,而XSD(XML Schema Definition)则是用于定义XML...通过深入研究其源代码,开发者可以增强对XML Schema和XML处理的理解,提升自身技能。
2. **C#中的XML处理**: 在C#中,可以使用System.Xml命名空间下的类来处理XML,如XmlDocument、XmlNodeReader、XPathNavigator等。这些类提供了读取、写入和操作XML文档的方法。 3. **XSD验证**: - 使用`...
4. **验证XML文件**:使用XSD文件对XML文件进行验证,确保XML符合XSD定义的规则。可以使用XML解析器或者命令行工具如`xmllint`来进行验证。 5. **生成Java类**:利用JAXB或其他类似的工具,如Apache CXF的XJC,根据...
在Delphi7中实现XML验证器,首先需要导入XML处理库,如MSXML或IXMLDOMDocument。然后,你可以加载XML文档和对应的XSD模式,通过调用相应的验证方法进行验证。如果XML文档符合XSD模式,验证器将返回成功;否则,它会...
2. **定制XSD文件**:如果您希望自定义生成的XSD文件名或者输出路径,可以通过添加额外参数来实现: ```plaintext xsd.exe test.xml /schema:customSchema.xsd ``` 上述命令将生成一个名为`customSchema.xsd`的...
C#中,.NET Framework提供了System.Xml.Schema命名空间,其中的类可以实现相同的功能。Python中,可以使用lxml库来实现这个转换。 转换过程通常包括以下步骤: 1. 加载XSD文件:首先,我们需要读取并解析XSD文件,...
在处理XML文档时,为了确保数据的准确性和一致性,我们常常会使用XSD(XML Schema Definition)来校验XML文档。XSD提供了一种形式化的语言,用于定义XML文档的结构和数据类型。 在标题“利用xsd校验xml”中,我们...
通过阅读和理解这些代码,你可以更好地掌握在Java环境下处理XML和XSD的方法。 总结起来,Java生成XML和XSD涉及到XML和XSD的基本概念,以及使用JAXB等Java库进行XML操作的技术。在实际项目中,理解并熟练运用这些...
XML(Extensible Markup Language)是一种用于标记...理解和掌握XML与XSD之间的转化和验证方法,对于处理和维护基于XML的数据至关重要。在实际编程中,合理运用这些知识可以提高代码质量,减少因数据错误导致的问题。
程序都还能保证对XML的更改使其满足XSD中规定的元素和属性。 也可以试试其他的XML文件,关于产生XML对应的XSD文件,可以从这个网址上转换一下: http://www.freeformatter.com/xsd-generator.html 我的做法是: 1 ...
xml生成xsd 使用方法:java -jar trang.jar EchoRequest.xml EchoRequest.xsd
**使用JAXB根据XSD生成XML文档** 在Java开发中,XML文档的生成与解析是一项常见的任务,特别是在处理数据交换和存储时。JAXB(Java Architecture ...了解并熟练掌握这一流程,能够极大地提高XML处理的效率和准确性。
在VS2005中,我们可以使用C#语言来实现XSD对XML的验证。C#提供了丰富的类库,如System.Xml和System.Xml.Schema,这些类库可以帮助我们方便地进行XML和XSD的相关操作。 首先,我们需要创建一个XSD文件,定义XML文档...
DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...
在C#编程中,验证XML文件的格式是否符合预定义的模式是非常重要的,这可以通过使用XSD(XML Schema Definition)文件来实现。XSD文件定义了一组规则,用于描述XML文档的结构和数据类型,从而确保XML数据的有效性和...
验证xml文件与xsd是否匹配
当你需要在C#项目中使用XSD文件时,可以使用`XmlReader`和`XmlReaderSettings`类来实现XML文档的验证。以下是如何使用这些类来根据XSD模式验证XML数据的步骤: 1. 创建`XmlReaderSettings`对象:这是配置XML读取器...
总的来说,XSD为XML文档提供了一套严谨的定义,使得在IETM系统和其他应用中创建和处理XML数据时能保证数据的完整性和一致性。通过解析和利用XSD,我们可以构建出强大的编辑工具,有效地支持XML文档的生成和编辑。