ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
445
445
EMPFEHLEN
-
15.04.09 20:34 #1
- Registriert seit
- Sep 2007
- Beiträge
- 473
Guten Abend!
Ich hab hier ein XML-Schema, in dem ich für die Attribute Standardwerte angegeben habe:
Code xml:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<?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:
Code xml:1 2 3 4 5 6
<?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 vbnet:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
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?
-
Das sollte ja schon beim Schreiben der Xml-Datei geschehen. Wie füllst du die Datei denn?
Was du auch probieren kannst:
Generier die mit dem Xsd Compilier aus dem Schema eine Klasse und deserialisier das Xml in eine Objektstruktur. Ggf setzt der Serializer die Default-Werte anhand des SchemasGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
16.04.09 12:44 #3
- Registriert seit
- Sep 2007
- Beiträge
- 473
Hey, danke! Diesen XSD-Compiler hab ich noch gar nicht entdeckt gehabt
. Die Klasse, die der erzeugt, setzt die Default-Werte ein, also jetzt gehts.
Ist der eigentlich schon irgendwo in Visual Studio eingebunden, oder muss man das selber machen?
-
Der Xsd Compiler wird mit dem Framework SDK geliefert, welches mit Visual Studio installiert wird.
http://msdn.microsoft.com/de-de/libr...0s(VS.80).aspx
Du kannst diesen zum Beispiel in PreBuild-Event eines Projekts aufrufenGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
Ähnliche Themen
-
Sum(attribut) wenn anderes Attribut übereinstimmt
Von Zimmi11 im Forum XML TechnologienAntworten: 2Letzter Beitrag: 28.06.10, 14:11 -
Standardwert in DB schieben
Von Blabliblubs im Forum PHPAntworten: 4Letzter Beitrag: 19.04.10, 18:12 -
Standardwert bei Parametern
Von Veränderung im Forum Flash PlattformAntworten: 2Letzter Beitrag: 15.12.08, 20:45 -
Java XPath Problem (1.5 javax.xml.xpath.*)
Von mad_dark_angel im Forum JavaAntworten: 5Letzter Beitrag: 10.05.06, 14:39 -
Parameter_X hat keinen Standardwert
Von Angielein im Forum ASPAntworten: 1Letzter Beitrag: 22.06.04, 08:19





Zitieren

Login





