xml相关知识

1. xml学习

xml是文本标记语言,是用来表示,传输,存储文本信息的.表现显示跟html一样.由元素和节点组成.内容信息都存在节点里面

创建xml文档容器TiXmlDocument doc;

加载数据到容器中 char *pData = (char*)[data bytes];

doc.Parse(pData);

判断加载是否成功 if(!doc.error())

获取根元素 TiXmlElement *pRoot = doc.RootElement();  DeviceList为根元素

获取根元素下第一个孩子元素,必须用根元素对象去获取: TiXmlElement *pNode = pRoot ->FirstChildElement("ls");

获取孩子元素下节点内容: const char *pCount = pRoot->GetNodeText("allcount");

if(!doc.Error())

    {

        TiXmlElement * pRoot=doc.RootElement();

       

        if(pRoot)

        {

            TiXmlElement * pNode=  pRoot->FirstChildElement("Device");

            while (pNode!=NULL)

            {

                const char *pDevId = pNode->GetNodeText("DevId");

               

                pNode=pNode->NextSiblingElement("Device");

            }

        }

    }

<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DeviceList>\n<Device>\n<DevId>5685895-CH-1</DevId>\n<DevName>5685895</DevName>\n<DevGroupName>5685895</DevGroupName>\n<OnLine>2</OnLine>\n<WithPTZ>1</WithPTZ>\n<DoubleStream>1</DoubleStream>\n<RecStatus>0</RecStatus>\n<VisitStreamOption>0</VisitStreamOption>\n<DevType>201</DevType>\n<OSS>0</OSS>\n<LoginName>admin</LoginName>\n<LoginPassword>a123456</LoginPassword>\n</Device>\n<Device>\n<DevId>5685895-CH-2</DevId>\n<DevName>5685895</DevName>\n<DevGroupName>5685895</DevGroupName>\n<OnLine>2</OnLine>\n<WithPTZ>1</WithPTZ>\n<DoubleStream>1</DoubleStream>\n<RecStatus>0</RecStatus>\n<VisitStreamOption>0</VisitStreamOption>\n<DevType>201</DevType>\n<OSS>0</OSS>\n<LoginName>admin</LoginName>\n<LoginPassword>a123456</LoginPassword>\n</Device>\n<Device>\n<DevId>5685895-CH-3</DevId>\n<DevName>5685895</DevName>\n<DevGroupName>5685895</DevGroupName>\n<OnLine>2</OnLine>\n<WithPTZ>1</WithPTZ>\n<DoubleStream>1</DoubleStream>\n<RecStatus>0</RecStatus>\n<VisitStreamOption>0</VisitStreamOption>\n<DevType>201</DevType>\n<OSS>0<"… 0x000000011bbe8000

xml里面还有另外一种:1;根元素没有字段  2.节点必须在元素里面,节点和元素必须是一对<>和</>匹配 3.只有一个标记的是属性Attribute,没有<之类的表示 4.根元素或者元素下面第一个必须也是元素才能用FirstChildElement否则只能用NextSiblingElement 5.元素里面必须有节点或者元素或者属性才能为元素, <DevId>5685895</DevId>不能是元素 6. <DevId>5685895</DevId>为pRoot->FirstChild()

"<DevId>5685895</DevId>\n<Video ChannelId=\"0\">\n<Capture\nBrightness=\"\"\nContrast=\"\"\nSaturation=\"\"\nSharpness=\"\"\nDayNight=\"\"\nWhiteBalance=\"\"\nBackLight=\"\"\nSwitch2A=\"\"\nBinningSkip=\"\"\nTVSystem=\"\"\nHFlip=\"\"\nVFlip=\"\"\nTNF=\"\"\nSNF=\"\"\nVSTAB=\"\"\nLDC=\"\"\nFD=\"\"\nIrcutMode=\"\"\nIrcutSensitivity=\"\"\nIrcutNightStartTime=\"\"\nIrcutNightEndTime=\"\"\n/>\n<Encode>\n<EncodeConfig\nStream=\"\"\nResolution=\"\"\nEncodeFormat=\"\"\nBitRateControl=\"\"\nInitquant=\"\"\nBitRate=\"\"\nFrameRate=\"\"\n/>\n<EncodeConfig\nStream=\"\"\nResolution=\"\"\nEncodeFormat=\"\"\nBitRateControl=\"\"\nInitquant=\"\"\nBitRate=\"\"\nFrameRate=\"\"\n/>\n</Encode>\n<JpegConfig\nEnable=\"\"\nStream=\"\"\nQuality=\"\"\nFramerate=\"\"\n/>\n<Overlay\nEnable=\"1\"\nTransparency=\"3\"\nChanID=\"0\"\n>\n<TimeOverlay\nPosX=\"0\"\nPosY=\"0\"\nFormat=\"yyyy-mm-dd hh:mm:ss\"\n/>\n<TitleOverlay\nPosX=\"1\"\nPosY=\"1\"\nTitle=\"513130CEA2B9E2204832363420B4F3C2EDC2B7\"\n/>\n</Overlay>\n</Video>\n\n" 0x000000011eb99c10

if(!doc.Error()){

                                TiXmlElement *pRoot = doc.RootElement();

                                const char *devId = pRoot->FirstChild()->Value();

                                if(devId!= NULL && pRoot!= NULL){

                                    NSString *strOverlayEnable = @"";

                                    NSString *strOverlayTran = @"";

                                    NSString *strChannelId = @"";

                                    NSString *strTimeVoerlayPosX =@"";

                                    NSString *strTimeVoerlayPosY =@"";

                                    NSString *strTimeVoerlayFormat =@"";

                                    NSString *strTitleVoerlayPosX =@"";

                                    NSString *strTitleVoerlayPosY =@"";

                                    NSString *strTitleVoerlayTitle =@"";

                                    TiXmlElement *pTimeNode = pRoot->NextSiblingElement("Video");

                                    if(pTimeNode){

                                        TiXmlElement *pOverlayNode = pTimeNode->FirstChildElement("Overlay");

                                        const char *pOverlayEnable = pOverlayNode->Attribute("Enable");

                                        const char *pOverlayTran = pOverlayNode->Attribute("Transparency");

                                        const char *channelId = pOverlayNode->Attribute("ChanID");

                                        if(pOverlayEnable != NULL){

                                            if(pOverlayEnable != NULL){

                                                strOverlayEnable = [NSString stringWithUTF8String:pOverlayEnable];

                                            }

                                            if(pOverlayTran != NULL){

                                                strOverlayTran = [NSString stringWithUTF8String:pOverlayTran];

                                            }

                                            if(channelId != NULL){

                                                strChannelId = [NSString stringWithFormat:@"%d",[[NSString stringWithUTF8String:channelId] intValue]+1] ;

                                            }

                                        }

                                        if(pOverlayNode){

                                            TiXmlElement *pOverlayTimeNode = pOverlayNode->FirstChildElement("TimeOverlay");

                                            if(pOverlayTimeNode){

                                                const char *timeVoerlayPosX = pOverlayTimeNode->Attribute("PosX");

                                                const char *timeVoerlayPosY = pOverlayTimeNode->Attribute("PosY");

                                                const char *timeVoerlayFormat = pOverlayTimeNode->Attribute("Format");

                                                if(timeVoerlayPosX!=NULL){

                                                    strTimeVoerlayPosX = [NSString stringWithUTF8String:timeVoerlayPosX];

                                                }

                                                if(timeVoerlayPosY!=NULL){

                                                    strTimeVoerlayPosY = [NSString stringWithUTF8String:timeVoerlayPosY];

                                                }

                                                if(timeVoerlayFormat!=NULL){

                                                    strTimeVoerlayFormat = [NSString stringWithUTF8String:timeVoerlayFormat];

                                                }

                                            }

                                            TiXmlElement *pOverlayTitleNode = pOverlayNode->FirstChildElement("TitleOverlay");

                                            if(pOverlayTitleNode){

                                                const char *titleVoerlayPosX = pOverlayTitleNode->Attribute("PosX");

                                                const char *titleVoerlayPosY = pOverlayTitleNode->Attribute("PosY");

                                                const char *titleVoerlayTitle = pOverlayTitleNode->Attribute("Title");

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容