如何学习XML?

最近感觉对XML比较感兴趣
但是却不知道如何下手
从网上找了很多资料
但是大部分都很乱,很杂
我想问问各位大侠学习XML该如何入手?重点应该放在哪?有什么比较好的学习资料?
[color=red]附:我是学JAVA的[/color]

作为一种无意义可任意自定义的格式,XML也要学吗?这是个奇怪的问题。
看看百度百科就可以了解XML的前世今生,当然其实真正要知道的只有几个要点:
[b]1,文档结构[/b]。XML文档的结构有个头部说明,可以指定编码和校验规则;后面么就是用<></>写一堆树节点了。学习途径:找几个现成的xml文档看看就知道了。
[b]2,文档规则[/b]。XML的文档结构和内容可以借助工具按指定DTD或Schema来进行自动校验或代码提示(包括节点顺序,可填充数据等等)。学习途径:搜索关键字dtd,schema,xsd,推荐教材:http://www.w3school.com.cn/x.asp
[b]3,到此就基本了解xml了,下面可以联系用java来操作xml[/b],推荐类库dom4j,http://www.dom4j.org,按照官方范例或网上的博客写几个简单的例子,重点是d拼装和解析。到此就能满足大多数的开发需要了。
[b]4,进阶。了解xpath[/b],xpath能帮助你快速读写xml,xmlspy这个工具自带xpath查询器,可以用来练习。dom4j也支持xpath,这时候可以在程序里应用。
4,接着进阶。练习自己写dtd或xsd,并用dom4j来验证xml。这阶段是利用xml来达到某些目的,如规定特定格式的配置文件便于编写xml,一般是架构师的活了。

上面这些事xml的根本基础,是道。至于其他的xml相关事物:
xslt是过气的东西——也从来没流行过——不要管了;
SOAP,webservices、wsdl,rss,atom之流都是具体xml的应用,每种协议都有自己的xml定义,而一般都有写好的java类库来处理,不用去费神。
xquery,太魔幻了,还是用关系数据库或对象数据库吧。
这些用到的时候看看就知道了。

http://www.verycd.com/topics/93279/在这个下载视频看看!看完后多写代码就行了!呵呵!重点放在怎么解析XML上

我来给你列个提纲:

1) XML概述
---基本语法
---标签语法
---文档部分
---元素
---字符数据
---属性
---注释
---CDATA部分
---格式正规的文档

2) XML命名空间
---命名空间
---定义和申明命名空间

3) DTD
---定义
---为什么引入
---申明
---元素申明
---实体申明
---属性申明

4) XML Schema
---逻辑XML Schema的文档结构
---元素的定义

5) 可扩展样式表语言(如果不是工作内容,就不是重点)
---概述
---XSLT常用语法和函数

6) 其他的相关规范
---XPath
---XLink & XPointer

Java语言相关部分:
1) XML的几种解析方式
2) XML与Bean的相互转换

相关的Reference: http://www.w3.org/XML/

要想学好XML,我觉得应该是一个比较系统的学习过程,首先你要学会HTML,然后就是CSS,如果有时间应该学习javascript,最后才是XML。

HTML,CSS都是基础,不一定要很精通,JS到XML的应用的时候比较有用,所以只要开始对上面三种有一定基础,有一定了解了,就可以开始学习XML了。

如果有一定英语基础,我www.w3schools.com去学习,那里的东西很全面,但是东西都不是很深入,可以看看,进行一个初步学习
[color=red]把XML当成一个数据库[/color]

xml本身就是一个数据表示结构而已,不会很难啊

可以看看孙鑫的xml视频,不错

才学习了XML及其一些和VC的编程技巧,不敢独享,希望对有志于学习的朋友有所帮助!~
1。XML基本概念
相对于所有的关于XML的教材,往往说了很久,也让人很模糊XML的一些概念和术语,(我就是很晕)后来我自己总结了一些,发现还不错,其实这样的话还学的清晰,学的快!
XML:说到底就是一种数据交换的技术,他不能单独使用,否则没有任何意义!,相对于大家熟悉的HTML来说,XML注重于数据结构以及数据的存储,而HTML则关心的是显示,这一点,大家要清晰。
CSS/XSL:两种显示XML文件的格式,相对来说CSS显得简单和容易,而XSL显得技术更新。
DTD/Schame:两种规范XML文档正确性的技术,其中DTD已经处于被淘汰的地位,而Schame非常先进和完善!
其实你只要弄清楚了上面几个概念,你已经入门了,其余的是一些格式的熟练和技巧了!
2。XML和VC的结合:
可谓强强联手啊,具体我不多说,只是在这里,贴一个例子,大家就很清楚了:
#include "stdafx.h"
#include "iostream.h"
//#include "msxml.h"
#import "msxml.dll" //引入类型库

_bstr_t XMLTemple="-119";

void CreateXML();
void LoadFromString();

int main(int argc, char* argv[])
{
cout<<"XML Demo例子"<<endl;

CoInitialize(NULL); //初始化COM 环境

cout<<"生成新的XML文件"<<endl;
CreateXML();

cout<<"读取已有的XML文件"<<endl;

LoadFromString();

return 0;
}

void CreateXML()
{
MSXML::IXMLDOMDocumentPtr pDoc; //首先应该先创建一个Document对象
HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
if(!SUCCEEDED(hr))
{
cout << "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!" << endl;
exit;
}
//创建根节点
MSXML::IXMLDOMElementPtr pDocElement;
pDocElement=pDoc->createElement("China");
pDoc->appendChild(pDocElement); //把根节点插入到目录树中
cout << "生成树根:\n" << pDoc->xml << endl;

MSXML::IXMLDOMElementPtr pNewChildElement;
pNewChildElement=pDoc->createElement("Beijing");
pNewChildElement->Puttext("-11");
pDocElement->appendChild(pNewChildElement);

cout << "添加节点:\n" << pDoc->xml << endl;
pNewChildElement=pDoc->createElement("Shanghai");
pNewChildElement->Puttext("9");
pNewChildElement->setAttribute("Weather",_variant_t("Cloudy"));
pDocElement->appendChild(pNewChildElement);
cout << "再添加节点:\n" << pDoc->xml << endl;

// pDocElement->removeChild (pNewChildElement);
// cout << "把刚加入的节点删除:\n" << pDoc->xml << endl;

}

void LoadFromString()
{
MSXML::IXMLDOMDocumentPtr pDoc;
HRESULT hr =pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
if(!SUCCEEDED(hr))
{
cout << "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!" << endl;
exit;
}
pDoc->loadXML(XMLTemple);
cout << "读取结果:\n" << pDoc->xml << endl;
MSXML::IXMLDOMElementPtr pDocElement=pDoc->GetdocumentElement();
MSXML::IXMLDOMElementPtr pElement=pDocElement->selectSingleNode("Shanghai");
pDocElement->removeChild(pElement);
cout << "定位删除Shanghai节点:\n" << pDoc->xml << endl;
cout << "保存结果 Save .....(模拟而已)" << endl;
cout << "\n 好了,就这么简单" << endl;
}