2017-12-28 8 views
0

Ich baue ein XML-Dokument, das gegen eine xsd-Datei validiert werden muss. Also brauche ich einen Verweis auf die xsd-Datei im root-Element des xml. Bisher verwende ich diese C# Code:Wie Sie xsi: noNamespaceSchemaLocation zu Serializer hinzufügen

var ser = new XmlSerializer(typeof(myspecialtype)); 
XmlSerializerNamespaces MainNamespace = new XmlSerializerNamespaces(); 
MainNamespace.Add("xlink", "http://www.w3.org/1999/xlink"); 
MainNamespace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
using (XmlWriter w = XmlWriter.Create(@"C:\myxmlfile.xml")) 
{ 
    w.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"utils/somexsl.xsl\""); 
    ser.Serialize(w, LeBigObject, HauptNs); 
} 

Das resultierende Xml wie folgt beginnt:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="utils/somexsl.xsl"?> 
<caddy-xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlVersion="03.07.00"> 

aber ich brauche diese:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="utils/somexsl.xsl"?> 
<caddy-xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlVersion="03.07.00" xsi:noNamespaceSchemaLocation="utils/theveryimportant.xsd"> 

stieß ich auf "Create" hier: Add Namespace to an xml root node c# aber ich kann es nicht mit dem Serializer zusammensetzen. Vielen Dank!

+0

Siehe [XML Serialization Namespaces] (https://Stackoverflow.com/a/27533862/3744182), die zeigt, wie "xsi: noNamespaceSchemaLocation" und "xsi: schemaLocation" hinzugefügt werden – dbc

Antwort

Verwandte Themen