xml
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| xml [2016/04/13 10:48] – [libXML2] djbuldog | xml [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| ====== XML ====== | ====== XML ====== | ||
| - | |||
| - | {{: | ||
| - | |||
| - | ===== libXML2 ===== | ||
| - | |||
| - | * [[http:// | ||
| - | * [[http:// | ||
| * XML | * XML | ||
| Řádek 14: | Řádek 7: | ||
| * například: | * například: | ||
| * element může mít atributy | * element může mít atributy | ||
| - | * například: | + | * například: |
| + | * element může mít i návěští | ||
| + | * například: | ||
| + | * jako uzel se označuje element nebo hodnota elementu | ||
| - | * existuje více způsobů jak s XML pracovat | + | * existuje více způsobů jak s XML pracovat, nejčastěji: |
| * pomocí parseru | * pomocí parseru | ||
| * DOM (DOM = Document Object Model) - z XML vyrobí obraz (strom) v paměti. | * DOM (DOM = Document Object Model) - z XML vyrobí obraz (strom) v paměti. | ||
| * SAX (SAX = Simple API for XML) - postupně prochází XML a vyvolává události (uživatelské callback). | * SAX (SAX = Simple API for XML) - postupně prochází XML a vyvolává události (uživatelské callback). | ||
| * pomocí [[http:// | * pomocí [[http:// | ||
| - | * přímé procházení, | + | * přímé procházení voláním funkcí (tj. dej další uzel, dej potomky, .. ) |
| + | |||
| + | {{: | ||
| + | |||
| + | ===== libXML2 ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | * podporuje SAX i Xpath | ||
| + | * měl jsem ale případ XML, kde mi ani jedno řešení nepřišlo vhodné | ||
| + | * použil jsem přímé procházení, | ||
| + | |||
| + | ===== Přímé procházení ===== | ||
| <code xml> | <code xml> | ||
| Řádek 97: | Řádek 106: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | * ukázka parsování atributů | ||
| + | |||
| + | <code xml> | ||
| + | .. | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | .. | ||
| + | </ | ||
| + | |||
| + | <code cpp> | ||
| + | // look for parameters | ||
| + | while (cur != NULL) { | ||
| + | if (cur-> | ||
| + | |||
| + | if ((!xmlStrcmp(cur-> | ||
| + | |||
| + | // look for name and value of parameter | ||
| + | char *name = NULL; | ||
| + | char *value = NULL; | ||
| + | xmlAttr *attribute = NULL; | ||
| + | |||
| + | attribute = cur-> | ||
| + | while(attribute && attribute-> | ||
| + | |||
| + | if ((!xmlStrcmp(attribute-> | ||
| + | if (name) xmlFree(name); | ||
| + | name = (char*)xmlNodeListGetString(cur-> | ||
| + | } | ||
| + | if ((!xmlStrcmp(attribute-> | ||
| + | if (value) xmlFree(value); | ||
| + | value = (char*)xmlNodeListGetString(cur-> | ||
| + | } | ||
| + | |||
| + | attribute = attribute-> | ||
| + | } | ||
| + | |||
| + | if ((value)&& | ||
| + | if (!strcmp((char*)name," | ||
| + | ext_allowed = (!strcmp((char*)value," | ||
| + | } | ||
| + | } | ||
| + | |||
| + | if (name) xmlFree(name); | ||
| + | if (value) xmlFree(value); | ||
| + | } | ||
| + | } | ||
| + | cur = cur-> | ||
| + | } | ||
| + | </ | ||
| + | ===== Vyhledávání přes Xpath ===== | ||
| + | |||
xml.1460537331.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
