zoukankan      html  css  js  c++  java
  • tinyXml直接解析XML字符串

    一直都用tinyxml直接LoadFile来解析XML,发现原来也可以直接解析XML字符串。

    XML文件:

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <person>
    3     <name>Alan</name>
    4     <age>26</age>
    5     <height>165</height>
    6     <weight>65</weight>
    7     <introduction>C senior engineer</introduction>
    8 </person>

    解析代码:

     1 #include <stdio.h>
     2 #include "tinyxml.h"
     3 
     4 int tinyxmlTest(void);
     5 
     6 int main(int argc, char* argv[])
     7 {
     8     tinyxmlTest();
     9     return 1;
    10 }
    11 
    12 int tinyxmlTest(void)
    13 {
    14 #if (1)
    15     char* xmlStr = "
    16 <person>
    17     <name>Alan</name>
    18     <age>26</age>
    19     <height>165</height>
    20     <weight>65</weight>
    21     <introduction>C senior engineer</introduction>
    22 </person>";
    23     
    24     TiXmlDocument* myDocument = new TiXmlDocument();
    25     myDocument->Parse(xmlStr);
    26 
    27 #else
    28     TiXmlDocument* myDocument = new TiXmlDocument();
    29   myDocument->LoadFile("person.xml");
    30 #endif
    31     //.....person.....
    32   TiXmlElement* rootElement = myDocument->RootElement();
    33     if (rootElement == NULL || strcmp(rootElement->Value(), "person"))
    34         return 0;
    35     printf("%s:	%s
    ", rootElement->Value(), rootElement->GetText());
    36 
    37     //.....name.....
    38   TiXmlElement* element = rootElement->FirstChildElement();
    39     if (element == NULL || strcmp(element->Value(), "name"))
    40         return 0;
    41     printf("%s:	%s
    ", element->Value(), element->GetText());
    42 
    43     //.....age.....
    44     element = element->NextSiblingElement();
    45     if (element == NULL || strcmp(element->Value(), "age"))
    46         return 0;
    47     printf("%s:	%s
    ", element->Value(), element->GetText());
    48     
    49     //.....height.....
    50     element = element->NextSiblingElement();
    51     if (element == NULL || strcmp(element->Value(), "height"))
    52         return 0;
    53     printf("%s:	%s
    ", element->Value(), element->GetText());
    54 
    55     //.....weight.....
    56     element = element->NextSiblingElement();
    57     if (element == NULL || strcmp(element->Value(), "weight"))
    58         return 0;
    59     printf("%s:	%s
    ", element->Value(), element->GetText());
    60 
    61     //.....introduction.....
    62     element = element->NextSiblingElement();
    63     if (element == NULL || strcmp(element->Value(), "introduction"))
    64         return 0;
    65     printf("%s:	%s
    
    ", element->Value(), element->GetText());
    66 
    67     return 1;
    68 }

    顺便推荐其他博友对tinyxml使用介绍

    http://qaohao.iteye.com/blog/496237

  • 相关阅读:
    java集合源码
    数据库表链接的几种方式
    面试题(RabbitMQ)
    常见面试题(Redis)
    某奥笔试题
    Servlet
    1——Django的基础及环境搭建
    6.13---example
    6.12---知道参数的重要性------插入数据-删除数据-修改数据注意Map
    6.12---前提两个对象的成员必须一致,才能将有数据的对象将数据传给反射获取的对象conver(有数据对象,目标对象)
  • 原文地址:https://www.cnblogs.com/1024Planet/p/4401929.html
Copyright © 2011-2022 走看看