XML编程

XML编程


1 XML文档格式

XML
XML, EXtensible Markup Language 可扩展标记语言

实际上,XML的应用一般比较简单,还够不上 一个“语言”的级别。

XML是一个数据格式,符合这种格式的文件后 缀名通常为*.xml

演示:在C:\下搜索*.xml…

入门示例 下面给出一个简单的例子:

 
<?xml version="1.0" encoding="GBK"?> 
<root>  
<host> afanihao.cn </host>  
<port> 8080 </port> 
</root> 
 

优点:可读性强!
缺点:解析费时、占用空间大、效率低!

XML文档格式
XML文档(document)用于传输数据
总体格式为:

<?xml version="1.0" encoding="GBK"?>  //声明 
<!DOCTYPE … xxx.dtd …>           //DTD(常省略) 
<root>  
<host> afanihao.cn </host>  
<port> 8080 </port> 
</root> 
                                 //内容 

参考教程: w3c school
http://www.w3school.com.cn/xml/

XML声明
XML文档的第一行必须是声明语句
例如,

<?xml version="1.0" encoding="GBK"?>

version 版本号:总是1.0
encoding 文字编码:GBK, UTF-8等,参考《中文问题》

XML语法


<?xml version="1.0" encoding="GBK"?> 
<root> 
 <host> afanihao.cn </host>  
 <port> 8080 </port> 
 </root> 
 

简言之,XML文档是一个由元素成的树型结 构。。。root,host, port都是元素

XML的元素
示例:


 <Contact  id="1001"  page="1">   
   <Name> 邵发 </Name>    
    。。。 
    </Contact> 
 
  1. 名称Name:必须配对!

 <Name> shaofa </Name>   
 <name> shaofa </name>   
 
以下写法不对:   
<NAME> shaofa </name> 
NAME与name不配对 

XML的元素
2. 元素的属性
< Contact id=“1001” page=“1”>

(1)采用 key=“value” 形式
(2)key值唯一
(3)多个属性以空格分开

XML的元素
3. 元素的内容可以是Text (文本)
< host> afanihao.cn < /host>

也可以是子元素 Child Element,支持往下嵌 套。。

 <note>    
  <from> 小张 </from>     
  <time> 2016/1/22 16:20 </time>     
  <content> 去哪吃饭 ? </content> 
  </note> 
  最终构成一个树型结构。 

XML文档结构
1.必须有一个唯一的根元素

<?xml version="1.0" encoding="GBK"?>

< root>
… 所有内容放在根元素里 …
< /root>

元素的名称可以任意指定。这里是叫root。

最终形成一个树形结构

XML文档结构
2. 元素内容 元素的内容可以是Text (文本)
< host> afanihao.cn < /host>

也可以是子元素 Child Element,支持往下嵌 套。。

 <note>    
  <from> 小张 </from>    
  <time> 2016/1/22 16:20 </time>    
  <content> 去哪吃饭 ? </content>
  </note> 

XML文档结构
3. 兄弟元素Sibling
处于同一元素底下的子元素,彼此为兄弟关系。 兄弟元素可以同名。

 
<Contact>     
<Name> 邵发 </Name>     
<Phone> 13810012345 </Phone>     
<Phone> 18600099999 </Phone> 
</Contact> 

一个联系人Contact可以有多个手机号。。

形式良好的 与 内容合法的
形式良好的 Well Formed
如果语法检查没有问题,那就是形式良好的。言下 之意,不管你内容是否合法。

 
<?xml version="1.0" encoding="GBK"?> 
<root>  
<host> afanihao.cn </host>  
<port> bu hao yi si </port> 
</root> 

这个XML文档是形式良好的,但内容有问题!
( 由DTD负责验证内容是否合乎要求 )

小节
一、介绍了XML的特点: 一种用文本形式传输数据的文档格式
二、介绍了元素的相关语法
三、本篇教程只介绍形式良好的XML 至少内容是否良好,则可以由程序来验证。

总体上很简单!DTD比较复杂,但我们一般只 用简单的!

2生成XML文档

tinyxml
tinyxml: 一个小巧的xml库,可以生成和解析 XML文档。免费开源,可以直接将源码加到项 目中,适合多种平台。

本课程使用的是tinyxml v1版本

下载tinyxml
从afanihao.cn上下载。。。

或者从tinyxml的作者官网下载。。。 http://sourceforge.net/projects/tinyxml/

演示:将tinyxml源码加到VC项目中…

生成XML文档
#include “…/tinyxml/tinyxml.h”

// XML文档对象
TiXmlDocument xml_doc;

… 添加 声明 和 元素 …

// 第一种办法:直接保存到文件 xml_doc.SaveFile(“example02a.xml”);

// 第二种办法:转成string
string text ;
text << xml_doc;

添加声明和元素
添加声明
xml_doc.LinkEndChild(new TiXmlDeclaration( “1.0”, “GBK”, “” ));

添加根元素
TiXmlElement * xml_root = new
TiXmlElement(“root”);
xml_doc.LinkEndChild(xml_root);

总之,由父级节点LinkEndChild来挂接子元 素。。。

添加子元素和文本 仍然是使用 LinkEndChild 来挂接。。。

子元素
TiXmlElement* xml_child = new
TiXmlElement(“host”);
xml_root->LinkEndChild(xml_child );

文本
xml_child->LinkEndChild( new TiXmlText(“afanihao.cn”));

设置属性attribute
xml_child->SetAttribute(“checked”, “true”);
xml_child->SetAttribute(“station”, 1001);

元素列表 形如。。。

 <?xml version="1.0" encoding="GBK" ?> 
 <root>     
 <NoteList>        
  <Note></Note>       
  <Note></Note>    
  <Note></Note>    
  </NoteList> 
   </root> 

在NoteList下有多个名为Note的元素列表。。

小结
介绍了使用tinyxml库生成XML文档的方法

3 解析XML文档

用tinyxml解析XML
tinyxml也有解析xml的功能

基本框架
TiXmlDocument xml_doc;
xml_doc.LoadFile(“example02a.xml”);
或 xml_doc.Parse ( … )

TiXmlElement* xml_root = xml_doc.RootElement();

得到子元素
TiXmlElement* xml_host
= xml_root->FirstChildElement(“host”);

得到元素的文本和属性
const char* text
= xml_host->GetText();
const char* aChecked
= xml_host->Attribute(“checked”);
const char* aStation
= xml_host->Attribute(“station”);

注:返回值可能为NULL,表示不存在

同名称的元素列表
TiXmlElement* xml_Note
= xml_NoteList->FirstChildElement(“Note”);
while(xml_Note)
{

// 下一个兄弟元素
xml_Note
= xml_Note->NextSiblingElement(“Note”);
}
先找第一个。。。再找兄弟元素。。。

小结
介绍了如何使用tinyxml来解析XML文档

4 XML应用示例 – 配置文件

XML的应用场景
1 配置文件 ( 应用最多的场合 )
2 服务器的RESTful接口 ( 如,亚马逊的云服务接口 )
3 WebService接口

配置文件
配置文件:将用户的配置保存到xml文件里

示例:
一个用于Qt实现的GUI应用程序
( 参考Qt篇 )

学习资源 《C语言/C++学习指南》补充》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Delphi XML权威指南》是一本专注于使用Delphi编程语言处理XML的权威指南。它提供了全面而详细的信息,帮助读者了解如何在Delphi中操作XML数据,包括解析、创建和修改XML文档,以及将XML数据与其他数据格式进行转换和交互。 本指南首先介绍了XML的基本概念和语法,使读者能够对XML文档的结构和格式有一定的了解。接着,它详细介绍了Delphi中的XML处理功能,包括使用内置的XML工具包和第三方组件库进行XML解析和生成。读者将学习如何使用这些工具来读取和写入XML文档,访问和操作XML元素和属性,以及处理XML数据的转换和验证。 《Delphi XML权威指南》还提供了大量的示例代码和实践案例,帮助读者理解和应用所学知识。这些示例涵盖了各种常见的XML操作场景,如解析和处理复杂的XML文档,从数据库中导入和导出数据,以及与Web服务进行XML通信等。读者可以通过这些实例来加深对XML处理技术的理解,同时也可以将其应用于自己的实际项目中。 总的来说,《Delphi XML权威指南》是一本非常实用和权威的教材,适合那些希望在Delphi中使用XML进行数据处理和交互的开发者阅读和学习。无论是初学者还是有一定经验的开发者,都可以通过这本指南提供的知识和技巧来提升自己的XML编程能力。 ### 回答2: 《Delphi XML权威指南》是一本关于Delphi编程语言中处理XML数据的权威指南。XML(可扩展标记语言)是一种用于描述和传输数据的标记语言,它在Web应用程序和数据交换方面非常流行。 本指南从初学者到高级开发人员都能受益。它首先介绍了XML的基础知识,包括语法、标签、属性和实体等内容。之后,它深入探讨了Delphi中处理XML的各种技术和工具,如DOM(文档对象模型)、SAX(简单API for XML)、XML文档处理器等。 这本指南的作者是一位经验丰富的Delphi开发人员,他在书中分享了自己多年来在XML编程方面的实践经验。他提供了大量的示例代码和实用技巧,帮助读者快速掌握使用Delphi处理XML的技能。读者将学习如何读取、写入和修改XML文档,以及如何使用XPath(XML路径语言)查询和转换数据。 此外,《Delphi XML权威指南》还深入研究了与XML相关的一些高级主题,如XML模式验证、命名空间和XSLT(可扩展样式表语言转换)等。这些主题对于开发复杂的XML应用程序至关重要。 总之,《Delphi XML权威指南》是一本循序渐进、内容丰富的指南,适合任何想要在Delphi中处理XML数据的开发人员。无论是初学者还是有经验的开发人员,都将从这本书中获得宝贵的知识和技能,进一步提升自己在XML编程方面的能力。 ### 回答3: "Delphi XML权威指南"是一本涵盖了Delphi编程语言XML技术的权威指南。该书详细介绍了Delphi如何与XML进行交互,包括XML的解析、创建、修改、处理和转换等方面的知识。 该书首先对XML的基本概念和语法进行了解释,介绍了XML的标签、属性、命名空间等重要概念,并提供了Delphi中处理XML所需的基础知识。然后,书中详细介绍了Delphi中用于处理XML的各种技术和工具,包括使用Delphi自带的XML组件、第三方库以及其他相关技术。 书中还提供了大量的示例代码和实用的技巧,帮助读者理解和应用所学的知识。通过学习本书,读者将能够掌握在Delphi中解析和创建XML文档、数据转换、XSLT转换、XML验证等方面的技巧,并能够灵活运用这些技术进行实际项目开发。 总的来说,"Delphi XML权威指南"是一本对于想要在Delphi中应用XML技术的开发人员来说不可或缺的指南。无论是初学者还是有一定经验的开发者,都可以从中深入了解Delphi与XML的结合,提升开发效率,开发出更加高效、可靠的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值