tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
445
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    engelmarkus engelmarkus ist offline Mitglied Brokat
    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?
     

  2. #2
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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 Schemas
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  3. #3
    engelmarkus engelmarkus ist offline Mitglied Brokat
    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?
     

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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 aufrufen
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

Ähnliche Themen

  1. Sum(attribut) wenn anderes Attribut übereinstimmt
    Von Zimmi11 im Forum XML Technologien
    Antworten: 2
    Letzter Beitrag: 28.06.10, 14:11
  2. Standardwert in DB schieben
    Von Blabliblubs im Forum PHP
    Antworten: 4
    Letzter Beitrag: 19.04.10, 18:12
  3. Standardwert bei Parametern
    Von Veränderung im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 15.12.08, 20:45
  4. Java XPath Problem (1.5 javax.xml.xpath.*)
    Von mad_dark_angel im Forum Java
    Antworten: 5
    Letzter Beitrag: 10.05.06, 14:39
  5. Parameter_X hat keinen Standardwert
    Von Angielein im Forum ASP
    Antworten: 1
    Letzter Beitrag: 22.06.04, 08:19