Hej

Stworzyłem sobie plik xml, do którego jest podpięta schema. Schema określa, że atrybut Value dla węzła Node w pliku xml ma ustawianą wartość domyślną. Poniżej 2 pliki:

XSD

<?xml version="1.0" encoding="utf-8"?>

<xs:schema id="schema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Example">
xs:complexType
xs:sequence
<xs:element ref="Node" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="Node">
    <xs:complexType>
        <xs:attribute name="Name" type="xs:string" use="required" />
        <xs:attribute name="Value" type="xs:string" <b>default="myValue"</b> />
    </xs:complexType>
</xs:element>

</xs:schema>

XML

<?xml version="1.0" encoding="utf-8" ?>
<Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<Node Name="myName"/>
</Example>

Jeśli wczytam plik xml do obiektu typu XmlDocument, to wartość atrybutu Value dla węzła Node:

xmldoc.GetElementsByTagName("Node")[0].Attributes["Value"]

wynosi NULL

Jeśli następnie zwaliduje schemą obiekt typu XmlDocument, to wartość atrybutu Value dla węzła Node jest inicjalizowana wartością domyślną atrybutu ze schemy, zatem wyrażenie:

xmldoc.GetElementsByTagName("Node")[0].Attributes["Value"].Value

zwraca teraz wartość "myValue"

Mój problem brzmi: jak zapisać obiekt XmlDocument do pliku XML, z tą dodatkową informacją, żeby miał on poniższą postać:

XML

<?xml version="1.0" encoding="utf-8" ?>
<Example xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<Node Name="myName" Value="myValue"/>
</Example>

Dodam, że metoda Save obiektu typu XmlDocument tego nie robi, pomimo że walidacja ustawiła wartość atrybutu. Jest jakiś sposób zrobienia tego automatycznie, czy trzeba ręcznie co byłoby bez sensu ?.

Z góry dzięki.
Pozdrawiam.