Kam zapisovat data v xml dokumentu? Do Attribute, nebo do InnerText?   otázka

XML, Databáze

Dobrý den, chtěl bych se zeptat, který z přístupu k datům v xml dokumentu je správný, nebo lepší.

Ukládání dat do Node.Attribute, nebo do Node.InnerText

<Osoba Jmeno="Jan" Prijmeni="Novotný" RodneCislo="123456/9876" />

<Osoba>
 <Jmeno>Jan</Jmeno>
 <Prijmeni>Novotný</Prijmeni>
 <RodneCislo>123456/9876</RodneCislo>
</Osoba>

Mám ve zvyku používat první způsob, ale nejsem si jistý, jestli je to v pořádku.

Děkuji za reakci, Hranec.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslím, že to závisí na struktuře a množství dat, které mají v tom souboru být, ale je to v podstatě šumák. XML soubory se většinou otevírají pomocí nějakého programu, takže výsledný vzhled výstupu je pak stejně nastaven "tím" programem...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji, přijde mi to tak...

Jen jsem si nebyl jistý. Přistupuji v xml přes XPath a ten jsem si říkal, že by mohl mít možnosti navíc na innertext. Ale zatím mi nic zásadního nechybělo, tak asi zůstanu při starém.

Díky, Hranec.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Lepší pristup je asi ukladanie dat do elementov teda:

<Osoba>
 <Jmeno>Jan</Jmeno>
 <Prijmeni>Novotný</Prijmeni>
 <RodneCislo>123456/9876</RodneCislo>
</Osoba>

Atributy sa vyuzivaju na popis dat v elementoch napr.

<Osoba typ="pravnicka">
 <Jmeno>Jan</Jmeno>
 <Prijmeni>Novotný</Prijmeni>
 <RodneCislo>123456/9876</RodneCislo>
</Osoba>
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Lepší přístup z jakého důvodu? V čem je lepší? Ano, je to přehlednější, ale podle mě XML soubor se běžně neotvírá a data se z něj získávají z nějakého programu. V programu určí programátor, jaký má být výstup, resp. jak mají být data zobrazena, takže si myslím, že je to úplně jedno...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Lepší přístup z jakého důvodu? V čem je lepší?

Podme sa pozriet na tvoj priklad z osobou.

Predstav si ze napr. potrebujes aby osoba mala viac mien alebo prijmeni.

Atribut mozes vzdy definovat iba jeden:

<Osoba Jmeno="Jan"  Jmeno="Jan1" Prijmeni="Novotný" RodneCislo="123456/9876" /> //toto asi nemozes pouzit

Ale ak bude meno ako element, tak to nie je problem, pouzijes ho viac krat.

Trochu som pracoval s XSLT a videl som kopec XML, vsimol som si ze vacsina to robi tak, ako som pisal v mojom komente.

Ale samozrejme casto zalezi na co robis... ak je to nejaka mala blbost je to asi jedno, ak je to nieco trochu zlozitejsie, alebo nieco co sa bude casom menit, je lepsia varianta robit to cez elementy (podla mna :-).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, na začátku jsem psal, že to záleží na struktuře dat...

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Pomocí inner text je to variabilnější z pohledu rozšiřování. Pokud to narvu do atributu, nebudu to moct dále větvit (což je mnohdy problém u xml feedu použivajícího X zákazníky). Na druhou stranu se mi atribut mi zdá méně ukecaný (menší přenos dat).

R.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji za přínosnou diskusi. Chápu z toho, že pokud se jedná o jasnou a neměnnou strukturu podobnou klasické tabulce, je to celkem jedno, který postup zvolím. Byl jsem i zvědavý, jestli třeba není rozdíl v rychlosti vyhledávání, načítání, ukládání...

Nebo například skutečnost, že ten druhá postup (InnerText) je náročnější na velikost samotného souboru. Je to směrodatné? K nečtení dojde jednou. Až se data uloží na ramku, tak toho místa zabírají stejně?

Děkuji, Hranec.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Také souhlasím s tím, že lepší je elementový zápis. Je to obecnější, takže když nám nic nebrání tomu si vybrat formát toho XML tak bych to udělal elementy. Když je pak potřeba formát rozšířit o další údaje, dají se tam lépe dodatečně dodat (např. do podelementů nebo do těch atributů).

Také ne všechna data se dají umístit do atributů, do elemetu jo (např. přes CDATA).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback