Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API del modelo de objetos de esquema (SOM) se puede usar para leer y escribir esquemas del lenguaje de definición de esquemas XML (XSD) de archivos u otros orígenes y compilar esquemas XML en memoria mediante las clases del System.Xml.Schema espacio de nombres que se asignan a las estructuras definidas en la Recomendación del esquema XML de World Wide Web Consortium (W3C).
Leer y escribir esquemas XML
La XmlSchema clase proporciona los Read métodos y Write para leer y escribir esquemas XML. El Read método devuelve un XmlSchema objeto que representa el esquema XML y toma un opcional ValidationEventHandler como parámetro para controlar advertencias y errores de validación de esquemas detectados al leer un esquema XML.
El método Write escribe esquemas XML en los objetos Stream, TextWriter y XmlWriter, y puede tomar un objeto opcional XmlNamespaceManager como parámetro. Un XmlNamespaceManager se utiliza para gestionar los espacios de nombres encontrados en un esquema XML. Para obtener más información sobre la XmlNamespaceManager clase , vea Administración de espacios de nombres en un documento XML.
En el ejemplo de código siguiente se muestra cómo leer y escribir esquemas XML desde y en un archivo. El ejemplo de código toma el archivo example.xsd
, lo lee en un objeto XmlSchema mediante el método static
Read y, a continuación, escribe el archivo en la consola y en un nuevo archivo new.xsd
. El ejemplo de código también proporciona un ValidationEventHandler como parámetro para el static
Read método para controlar las advertencias o errores de validación de esquemas detectados al leer el esquema XML.
ValidationEventHandler Si no se especifica (null
), no se notifican advertencias ni errores.
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Schema;
class XmlSchemaReadWriteExample
{
static void Main()
{
try
{
XmlTextReader reader = new XmlTextReader("example.xsd");
XmlSchema schema = XmlSchema.Read(reader, ValidationCallback);
schema.Write(Console.Out);
FileStream file = new FileStream("new.xsd", FileMode.Create, FileAccess.ReadWrite);
XmlTextWriter xwriter = new XmlTextWriter(file, new UTF8Encoding());
xwriter.Formatting = Formatting.Indented;
schema.Write(xwriter);
}
catch(Exception e)
{
Console.WriteLine(e);
}
}
static void ValidationCallback(object sender, ValidationEventArgs args)
{
if (args.Severity == XmlSeverityType.Warning)
Console.Write("WARNING: ");
else if (args.Severity == XmlSeverityType.Error)
Console.Write("ERROR: ");
Console.WriteLine(args.Message);
}
}
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Schema
Class XmlSchemaReadWriteExample
Shared Sub Main()
Try
Dim reader As XmlTextReader = New XmlTextReader("example.xsd")
Dim myschema As XmlSchema = XmlSchema.Read(reader, AddressOf ValidationCallback)
myschema.Write(Console.Out)
Dim file As FileStream = New FileStream("new.xsd", FileMode.Create, FileAccess.ReadWrite)
Dim xwriter As XmlTextWriter = New XmlTextWriter(file, New UTF8Encoding())
xwriter.Formatting = Formatting.Indented
myschema.Write(xwriter)
Catch e As Exception
Console.WriteLine(e)
End Try
End Sub
Shared Sub ValidationCallback(ByVal sender As Object, ByVal args As ValidationEventArgs)
If args.Severity = XmlSeverityType.Warning Then
Console.Write("WARNING: ")
Else
If args.Severity = XmlSeverityType.Error Then
Console.Write("ERROR: ")
End If
End If
Console.WriteLine(args.Message)
End Sub
End Class
El ejemplo toma el example.xsd
como entrada.
<?xml version="1.0"?>
<xs:schema id="play" targetNamespace="http://tempuri.org/play.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/play.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='myShoeSize'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
Consulte también
- Introducción al modelo de objetos de esquema XML
- Compilar esquemas XML
- Navegación de esquemas XML
- Edición de esquemas XML
- Incluir o importar esquemas XML
- XmlSchemaSet para la compilación de esquemas
- Conjunto de información de compilación posterior al esquema
- Administración de espacios de nombres en un documento XML