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:14] – [libXML2] djbuldog | xml [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| ====== XML ====== | ====== XML ====== | ||
| + | |||
| + | * XML | ||
| + | * každé XML má kořen - tj. hlavní element | ||
| + | * element je ohraničen startovací a ukončovací značkou | ||
| + | * například: | ||
| + | * například: | ||
| + | * element může mít atributy | ||
| + | * 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, nejčastěji: | ||
| + | * pomocí parseru | ||
| + | * 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). | ||
| + | * pomocí [[http:// | ||
| + | * přímé procházení voláním funkcí (tj. dej další uzel, dej potomky, .. ) | ||
| {{: | {{: | ||
| Řádek 8: | Řádek 26: | ||
| * [[http:// | * [[http:// | ||
| - | * jednoduchý | + | * 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 c++> | <code c++> | ||
| Řádek 57: | Řádek 94: | ||
| } | } | ||
| - | // check if the XML is Flowmon ADS configuration (root equal to configuration} | + | // check if the buf is XML configuration (root equal to configuration} |
| if (xmlStrcmp(cur-> | if (xmlStrcmp(cur-> | ||
| xmlFreeDoc(doc); | xmlFreeDoc(doc); | ||
| Řádek 69: | Řá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.1460535287.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
