Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Validazione stringa xml con XSD
mercoledì 23 aprile 2008 - 08.15
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
antobx
Profilo
| Newbie
7
messaggi | Data Invio:
mer 23 apr 2008 - 08:15
Salve a tutti.
Ho costruito una stringa xml usando un xmldocument (c# 2.0 )
usando del codice simile a questo
XmlElement MySearchNode = xmlDoc.CreateElement("MySearch");
xmlDoc.AppendChild(DSRicercaRSNode);
...
XmlNode node1 = xmlDoc.SelectSingleNode("/MySearch/Objects");
XmlAttribute nameAttrib = xmlDoc.CreateAttribute("result ");
nameAttrib.Value = "012";
node1.Attributes.Append(nameAttrib);
xmlDoc.outerxml
devo validare la stringa con un XSD . Il codice che uso è il seguente :
XmlReader rdr = null;
XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None);
XmlTextReader readerXml = new XmlTextReader(p_xml, XmlNodeType.Element, context);
XmlTextReader readerSchema = new XmlTextReader(p_xsdPath);
XmlSchema schema = new XmlSchema();
schema = XmlSchema.Read(readerSchema, new
ValidationEventHandler(Schema_ValidationEventHandler));
XmlReaderSettings ReaderSettings = new XmlReaderSettings();
ReaderSettings.ValidationType = ValidationType.Schema;
ReaderSettings.Schemas.Add(schema);
ReaderSettings.ConformanceLevel = ConformanceLevel.Fragment;
ReaderSettings.ValidationEventHandler += new
ValidationEventHandler(settings_ValidationEventHandler);
rdr = XmlReader.Create(readerXml, ReaderSettings);
questo è il contenuto dell'XSD
(una parte)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="
http://www.w3.org/2001/XMLSchema">
<xs:element name="MySearch">
<xs:complexType>
<xs:sequence>
<xs:element name="Objects" type="tObjects" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="result" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:complexType name="tObjects">
<xs:sequence>
<xs:element name="House" type="tHouse" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="Garden" type="tGarden" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
....
Nota : la stringa xml che costruisco a questo aspetto
<MySearch>
<Objects result = '012' >
<House>
...
</House>
</Objects>
</MySearch>
Quando eseguo la validazione ottengo un errore :
The 'result' attribute is not declared.
Ho letto che per gestire gli attributi è necessario usare nel codice di validazione :
ReaderSettings.ValidationFlags = XmlSchemaValidationFlags.AllowXmlAttributes;
questo gestendo anche il valore attributeFormDefault="qualified"/"unqualified" nell'XSD.
Non funziona nulla !!
Ottengo sempre lo stesso errore
(se non tolgo l'attributo sia dalla stringa XMl e dall'xsd invece la validazione funziona
correttamente).
Qualcuno può aiutarmi ? grazie per l'attenzione ..
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !