DOs & DONTs – część pierwsza

Dzisiejszym wpisem chciałbym zapoczątkować krótką serię na temat tego co powinniśmy robić, a czego nie powinniśmy (a przynajmniej tak mi się wydaje). W części pierwszej przyjrzymy się XML.

XML – jeden z ważniejszych elementów w życiu każdego programisty. Pozwala nam m.in. przechowywać dane, które później możemy importować i tworzyć obiekty. Chciałbym teraz się skupić na konkretnym elemencie – mianowicie co robić, kiedy mamy węzeł nullowalny przechowujący string, czyli taki,  który może nie mieć żadnej wartości. W kodzie najczęściej możemy spotkać 2 rodzaje definiowania takich węzłów:

<Email></Email>
// lub
<Email xsi:nil="true" />

Sposób nr 1 to nic innego jak przechowywanie string.Empty co nie jest najlepszym rozwiązaniem, ponieważ w przypadku, gdy nastąpi zapis do bazy danych, będziemy przechowywać pusty string.

Sposób nr 2 jest dużo lepszy, operujemy na elemencie nullable, przy zapisie do bazy danych nie przekazujemy żadnych pustych stringów, a po prostu null’a. Żeby osiągnąć węzeł nullowalny, musimy wykonąc taki zabieg w schemacie xsd:

<element name="Email" nillable="true">
        <annotation>
          <documentation>User's email</documentation>
        </annotation>
        <simpleType>
          <restriction base="string">
            <maxLength value="50"/>
          </restriction>
        </simpleType>
      </element>

Jak widać, najważniejszym atrybutem jest tutaj nillable, któremu przypisujemy wartość true. Mówimy w ten sposób, że nasz węzeł może (ale nie musi) przechowywać wartości. Jeśli nie przechowuje, wtedy w trakcie deserializacji przypisywany jest null. Domyślnie nillable ma wartość false.

6 thoughts on “DOs & DONTs – część pierwsza

Leave a Reply to mbi Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s