Avatar billede jmarkling Nybegynder
23. oktober 2007 - 13:59 Der er 1 løsning

Læs Annotations i XSD skema (.NET)

Hej

Har fået den tosset ide at gemme nogle ekstra informationer i annotations i XSD som jeg skal bruge til at bestemme en udskrift type til udskrift af noget XML. Det tog mig lidt tid at finde frem til hvordan man hentet værdierne ud af XSD schemaet uden at bruge en XMLreader, men ved at indlæse schema'et. Jeg har valgt at putte min information ind som value i <xs:appinfo> 

<xs:element name="DK">
  <xs:annotation>
      <xs:appinfo>Print:A4,NumberOFCopies:8</xs:appinfo>
  </xs:annotation>
    ....

Syntes bare det er sådan lidt klodset, den måde jeg læser det på:

// stepping through global elements
foreach (XmlSchemaElement el in schema.Elements.Values)
{
  XmlSchemaAnnotation an = el.Annotation;
  XmlSchemaAppInfo xmlappInfo = an.Items[0] as XmlSchemaAppInfo;
  XmlNode[] nodes = xmlappInfo.Markup;
  XmlNode node = nodes[0];
  Console.WriteLine(node.Value);                                   
  }
}

Er der ikke en mere elegant måde at trække annotationen værdien ud for et element?

Havde først gemt informationerne i <xs:documentation> som value, men jeg var ikke i stand til at hive værdien ud...
Det virker som om man ligesom først kan tilgå values hvis man arbejder på en node... tænkte bare at der måtte være noget smartere... 

Drømmer om en annotation.getValue() funktion eller noget i den stil.
Avatar billede jmarkling Nybegynder
15. januar 2008 - 15:07 #1
Brugte lidt ovenstående, men tilgik annotations gennem xml filen, hvilket gjorde det lidt nemmere ved node.SchemaInfo.SchemaElement.Annotation
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester