XML 简介


以下参考于:XML 简介

什么是XML
  1. XML 指可扩展标记语言(EXtensible Markup Language)。
  2. XML 是一种很像HTML的标记语言。
  3. XML 的设计宗旨是传输数据,而不是显示数据。
  4. XML 标签没有被预定义。您需要自行定义标签。
  5. XML 被设计为具有自我描述性。
  6. XML 是 W3C 的推荐标准。
  7. XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。
XML和HTML区别

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

  1. XML 被设计用来传输和存储数据,其焦点是数据的内容。
  2. HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。


在这里插入图片描述

在这里插入图片描述

图片代码来源于视频教程

china.xml

<?xml version="1.0" encoding="utf-8"?>
<China>
	<City>
		<Name isbig="true">北京</Name>
		<Area>1.641万平方千米</Area>
		<Population>2200万</Population>
	</City>
	<City>
		<Name isbig="false">石家庄</Name>
		<Area>15848平方千米</Area>
		<Population>107万</Population>
	</City>
</China>

create_xml.c

#include <stdio.h>
#include <mxml.h>

int main(int argc, const char* argv[])
{
    // 创建xml文件头节点
    mxml_node_t *xml = mxmlNewXML("1.0");

    // 创建xml根节点 - china
    mxml_node_t* china = mxmlNewElement(xml, "China");


    // 创建城市节点
    mxml_node_t* city = mxmlNewElement(china, "City");
    // 添加子节点
    // name
    mxml_node_t* name = mxmlNewElement(city, "Name");
    // 设置标签值
    mxmlNewText(name, 0, "北京");
    mxmlElementSetAttr(name, "isbig", "true");
    // 面积
    mxml_node_t* area = mxmlNewElement(city, "Area");
    mxmlNewText(area, 0, "1.641万平方千米");
    // 人口
    mxml_node_t* popu = mxmlNewElement(city, "Population");
    mxmlNewText(popu, 0, "2200万");

    // 第二个城市节点
    city = mxmlNewElement(china, "City");
    // name
    name = mxmlNewElement(city, "Name");
    mxmlNewText(name, 0, "石家庄");
    mxmlElementSetAttr(name, "isbig", "false");
    area = mxmlNewElement(city, "Area");
    mxmlNewText(area, 0, "15848平方千米");
    popu = mxmlNewElement(city, "Population");
    mxmlNewText(popu, 0, "107万");

    // 将xml内容保存到磁盘
    FILE* fp = fopen("china.xml", "w");
    mxmlSaveFile(xml, fp, MXML_NO_CALLBACK);
    fclose(fp);
    mxmlDelete(xml);
    
    return 0;
}

parse_xml.c

#include <stdio.h>
#include <mxml.h>

int main(int argc, const char* argv[])
{
    // 从磁盘加载xml文件
    FILE* fp = fopen("china.xml", "r");
    if(fp == NULL)
    {
        printf("fopen error\n");
        return 0;
    }
    // root 节点指向xml文件头
    mxml_node_t* root = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);

    // 遍历 - 取出各个节点的值
    // 找到第一个城市节点
    mxml_node_t* city = mxmlFindElement(root, root, "City", NULL, NULL, MXML_DESCEND);
    if(city == NULL)
    {
        printf("xml node not found\n");
        return 0;
    }
    while( city  )
    {
        printf("==================\n");
        // 向下走一个节点
        mxml_node_t* node = mxmlWalkNext(city, root, MXML_DESCEND_FIRST);
        printf("city:   \n");
        printf("    name = %s\n", mxmlGetText(node, NULL));
        // 
        node = mxmlWalkNext(node, root, MXML_NO_DESCEND);
        printf("    area = %s\n", mxmlGetText(node, NULL));
        //
        node = mxmlWalkNext(node, root, MXML_NO_DESCEND);
        printf("    population = %s\n", mxmlGetText(node, NULL));
        // 搜索下一个城市节点
        city = mxmlFindElement(city, root, "City", NULL, NULL, MXML_DESCEND);
    }

    fclose(fp);
    mxmlDelete(root);

    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值