engelmarkus
Erfahrenes Mitglied
Guten Abend!
Ich hab hier ein XML-Schema, in dem ich für die Attribute Standardwerte angegeben habe:
Dazu ein passendes XML-Dokument:
Und hier jetzt mein Code, in dem die Attribut-Werte ausgegeben werden sollen:
Nur dummerweise gibts jetzt NullReferenceExceptions, wenn eines der Attribute nicht in der XML-Datei vorhanden ist. Wie bring ich ihn jetzt dazu, dass er, wie im Schema angegeben, Default-Werte einsetzt? Oder hab ich irgendwo einen Denkfehler drin?
Ich hab hier ein XML-Schema, in dem ich für die Attribute Standardwerte angegeben habe:
XML:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Daten">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Test">
<xs:complexType>
<xs:attribute name="Att1" type="xs:string" default="1" />
<xs:attribute name="Att2" type="xs:string" default="1" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Dazu ein passendes XML-Dokument:
XML:
<?xml version="1.0" encoding="utf-8"?>
<Daten xmlns="daten.xsd">
<Test Att1="1"/>
<Test Att1="2" Att2="3"/>
<Test Att2="4"/>
</Daten>
Und hier jetzt mein Code, in dem die Attribut-Werte ausgegeben werden sollen:
Code:
Imports System.Xml
Module Module1
Sub Main()
Dim datei As New XmlDocument()
datei.Load("daten.xml")
Dim xnm As New XmlNamespaceManager(datei.NameTable)
xnm.AddNamespace("x", "daten.xsd")
For Each n As XmlNode In datei.SelectNodes("/x:Daten/x:Test", xnm)
Console.WriteLine(n.Attributes("Att1").Value)
Console.WriteLine(n.Attributes("Att2").Value)
Next
Console.ReadKey()
End Sub
End Module
Nur dummerweise gibts jetzt NullReferenceExceptions, wenn eines der Attribute nicht in der XML-Datei vorhanden ist. Wie bring ich ihn jetzt dazu, dass er, wie im Schema angegeben, Default-Werte einsetzt? Oder hab ich irgendwo einen Denkfehler drin?

Zuletzt bearbeitet von einem Moderator: