Uživatelské nástroje

Nástroje pro tento web


xml

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
xml [2016/04/13 10:33] – [libXML2] djbuldogxml [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: ''<element1>..</element1>'' - neprázdný element s názvem element1
 +      * například: ''<element1/>'' - prázdný element s názvem element1
 +    * element může mít atributy
 +      * například: ''<element1 atr1='hodnota' atr2=\'hodnota2'>..</element1>''
 +    * element může mít i návěští
 +      * například: ''<namespace1:element1/>''
 +    * 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://www.w3schools.com/xsl/xpath_intro.asp|xpath]] - vyhledání elementů výrazem
 +    * přímé procházení voláním funkcí (tj. dej další uzel, dej potomky, .. )
  
 {{:xml-decision-diag.png?500|http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c}} {{:xml-decision-diag.png?500|http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c}}
Řádek 8: Řádek 26:
   * [[http://www.xmlsoft.org/html/index.html|programátorská dokumentace]]   * [[http://www.xmlsoft.org/html/index.html|programátorská dokumentace]]
  
-  * existuje více způsobů jak knihovnu použít, jak parsovat +  * podporuje SAX i Xpath 
-    * pomocí [[http://www.w3schools.com/xsl/xpath_intro.asp|xpath]] +  měl jsem ale ípad XMLkde mi ani jedno řešení nepřišlo vhodné 
-    * přes parsernapříklad SOAX +  použil jsem přímé procházení, viz následující příklad
-    * přímé parsování, viz následující jednoduchý příklad:+
  
 +===== Přímé procházení =====
  
 <code xml> <code xml>
Řádek 88: Řádek 106:
 } }
 </code> </code>
 +
 +  * ukázka parsování atributů
 +
 +<code xml>
 +..
 +<parameter name="PerspectiveSeason" value="183"/>
 +<parameter name="LockConfig" value="0"/>
 +<parameter name="extServices" value="1"/>
 +<parameter name="currentMaxThreads" value="2"/>
 +<parameter name="resolveFilter" value="LAN"/>
 +..
 +</code>
 +
 +<code cpp>
 +   // look for parameters
 +    while (cur != NULL) {
 +        if (cur->type == XML_ELEMENT_NODE) {
 +
 +            if ((!xmlStrcmp(cur->name, (const xmlChar *)"parameter"))) {
 +
 +                // look for name and value of parameter
 +                char *name = NULL;
 +                char *value = NULL;
 +                xmlAttr *attribute = NULL;
 +
 +                attribute = cur->properties;
 +                while(attribute && attribute->name && attribute->children) {
 +
 +                    if ((!xmlStrcmp(attribute->name, (const xmlChar *)"name"))) {
 +                        if (name) xmlFree(name);
 +                        name = (char*)xmlNodeListGetString(cur->doc, attribute->children, 1);
 +                    }
 +                    if ((!xmlStrcmp(attribute->name, (const xmlChar *)"value"))) {
 +                        if (value) xmlFree(value);
 +                        value = (char*)xmlNodeListGetString(cur->doc, attribute->children, 1);
 +                    }
 +
 +                    attribute = attribute->next;
 +                }
 +
 +                if ((value)&&(name)) {
 +                    if (!strcmp((char*)name,"extServices")) {
 +                        ext_allowed = (!strcmp((char*)value,"1"));
 +                    }
 +                }
 +
 +                if (name) xmlFree(name);
 +                if (value) xmlFree(value);
 +            }
 +        }
 +        cur = cur->next;
 +    }
 +</code>
 +===== Vyhledávání přes Xpath =====
 +
xml.1460536410.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki