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.