﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-乔栋的佛国-随笔分类-XML</title><link>http://www.cppblog.com/qiaodong/category/3327.html</link><description>耶路撒冷对你来说意味着什么？</description><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 17:14:54 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 17:14:54 GMT</pubDate><ttl>60</ttl><item><title>认识配置设置文件(INI与XML)</title><link>http://www.cppblog.com/qiaodong/archive/2006/12/28/16941.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Thu, 28 Dec 2006 06:38:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2006/12/28/16941.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/16941.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2006/12/28/16941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/16941.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/16941.html</trackback:ping><description><![CDATA[[windows]<br />load=<br />run=<br />NullPort=None<br /><br />[Desktop]<br />WallpaperStyle=2<br />Pattern=(无)<br /><br />[intl]<br />s2359=PM<br />iCountry=86<br />…… <br />配置文件把信息分成若干&amp;quot;节&amp;quot;，节标题放在方括号中，如[Desktop]就是Desktop节，在一个节内包含了一些与之相关相近的&amp;quot;项&amp;quot;，并通过等号对其进行赋值。<br />其中VALUE值可以有两种类型：数值型和字符串型，而且Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读、写：<br /><br />GetPrivateProfileInt() 从私有初始化文件获取整型数值<br />GetPrivateProfileString() 从私有初始化文件获取字符串型值<br />GetProfileInt 从win.ini 获取整数值<br />GetProfileString 从win.ini 获取字符串值<br />WritePrivateProfileString 写字符串到私有初始化文件<br />WriteProfileString 写字符串到win.ini<br /><br />在这里需要指出：当向配置文件存储信息时，不论是数据还是字符串都要先转换成字符串，然后再行存储。<br /><br /><br /><br /><img src ="http://www.cppblog.com/qiaodong/aggbug/16941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2006-12-28 14:38 <a href="http://www.cppblog.com/qiaodong/archive/2006/12/28/16941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML学习笔记</title><link>http://www.cppblog.com/qiaodong/archive/2006/12/26/16858.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Tue, 26 Dec 2006 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/qiaodong/archive/2006/12/26/16858.html</guid><wfw:comment>http://www.cppblog.com/qiaodong/comments/16858.html</wfw:comment><comments>http://www.cppblog.com/qiaodong/archive/2006/12/26/16858.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qiaodong/comments/commentRss/16858.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qiaodong/services/trackbacks/16858.html</trackback:ping><description><![CDATA[1:XML与HTML的异同: 
<p>XML是被设计用来描述数据的，重点是：什么是数据，如何存放数据。<br />HTML是被设计用来显示数据的，重点是：显示数据以及如何显示数据更好上面。</p><p>HTML是与显示信息相关的, XML则是与描述信息相关的。 <br /><br />2:通过XML,你可以在HTML文件之外存储数据。<br /><br />把数据转换为XML格式存储将大大减少交换数据是的复杂性，并且还可以使得这些数据能被不同的程序读取.<br /><br />3:Easy Sample<br /></p><table class="ex" width="100%" border="1"><tbody><tr><td><pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;note&gt;
&lt;to&gt;Lin&lt;/to&gt;
&lt;from&gt;Ordm&lt;/from&gt;
&lt;heading&gt;Reminder&lt;/heading&gt;
&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;
&lt;/note&gt;</pre></td></tr></tbody></table>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;   //  版本介绍,以及字符集使用的是ISO-8859-1 .<br />&lt;note&gt;                                                                 //根元素,一个文件只有只个根元素.     <br />&lt;to&gt;Lin&lt;/to&gt;<br />&lt;from&gt;Ordm&lt;/from&gt;<br />&lt;heading&gt;Reminder&lt;/heading&gt;<br />&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;      //描述性语言部分,讲述一个头为Reminder,内容为<br />                                                                              Don't forget me this weekend!的NOTE从LIN发送给ORDM.<br />&lt;/note&gt;                                                                  //根元素的结束,这样的字符必须是结构良好的,成对出现.<br />                                                                                嵌套也必须遵从顺序&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;是错误的。<br /><br />注意:XML对大小写是敏感的,note与Note与NOTE三者是完全不同的.<br /><br />4：属性值必须带引号<br /><table class="ex" width="100%" border="1"><tbody><tr><td><pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;note date="12/11/99"&gt;</pre></td></tr></tbody></table><br />其中版本号，以及时间皆为属性，所以必须加引号。<br /><br />注释的书写：&lt;!-- 这是一个注释 --&gt;  <br /><br />5：父元素与子元素之间的关系<br />假设有这样一个表：<br /><table width="60%" border="1"><tbody><tr><td><p><b>署名: XML 指南</b></p><p>第一章: XML入门简介</p><ul type="square"><li>什么是HTML 
</li><li>什么是XML </li></ul><p>第二章: XML语法</p><ul type="square"><li>XML元素必须有结束标记 
</li><li>XML元素必须正确的嵌套 </li></ul></td></tr></tbody></table><br />那么对应的语言描述如下：<br /><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;book&gt;
&lt;title&gt;<b>XML 指南</b>&lt;/title&gt;
&lt;prod id="33-657" media="paper"&gt;&lt;/prod&gt;</pre><pre>&lt;chapter&gt;XML入门简介
&lt;para&gt;什么是HTML&lt;/para&gt;
&lt;para&gt;什么是XML&lt;/para&gt;
&lt;/chapter&gt;
&lt;chapter&gt;XML语法
&lt;para&gt;XML元素必须有结束标记&lt;/para&gt;
&lt;para&gt;XML元素必须正确的嵌套&lt;/para&gt;
&lt;/chapter&gt;
&lt;/book&gt;</pre></td></tr></tbody></table> <br />在上面的代码中，book元素是XML文档的根元素，title元素和chapter元素是book元素的子元素。book元素是title元素和chapter元素的父元素。title元素，prod元素和chapter元素是平级元素，因为他们都有同一个父元素。<br /><br /><br />6:   命名<br />遵从一般的命名规则，但是注意在XML元素命名中不要使用":"，因为XML命名空间需要用到这个十分特殊的字符。<br /><br />7: 使用子元素还是属性<br /><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;person sex="female"&gt;
&lt;firstname&gt;Anna&lt;/firstname&gt;
&lt;lastname&gt;Smith&lt;/lastname&gt;
&lt;/person&gt;</pre></td></tr></tbody></table><br /><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;person&gt;
&lt;sex&gt;female&lt;/sex&gt;
&lt;firstname&gt;Anna&lt;/firstname&gt;
&lt;lastname&gt;Smith&lt;/lastname&gt;
&lt;/person&gt;</pre></td></tr></tbody></table><p>在第一个例子中，sex是一个属性，在第二个例子中，sex则是一个子元素。这两个例子都提供了相同的信息。</p><p>什么时候用属性，什么时候用子元素没有一个现成的规则可以遵循。我的经验是属性在HTML中可能相当便利，但在XML中，你最好避免使用<br /><br />推荐样式：<br /></p><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;note&gt;
&lt;date&gt;
&lt;day&gt;12&lt;/day&gt;
&lt;month&gt;11&lt;/month&gt;
&lt;year&gt;99&lt;/year&gt;
&lt;/date&gt;
&lt;to&gt;Tove&lt;/to&gt;
&lt;from&gt;Jani&lt;/from&gt;
&lt;heading&gt;Reminder&lt;/heading&gt;
&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;
&lt;/note&gt; </pre></td></tr></tbody></table><br />需要注意的是：元数据（与数据有关的数据）应该以属性的方式存储，而数据本身应该以元素的形式存储。<br /><br /><br />                                         <br />7: 数据岛
<p>使用非官方标准的&lt;xml&gt;标记可以将XML数据嵌入到HTML页面中。</p><p>XML数据可以象下面的例子那样嵌入HTML页面:</p><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;xml id="note"&gt;
&lt;note&gt;
&lt;to&gt;Tove&lt;/to&gt;
&lt;from&gt;Jani&lt;/from&gt;
&lt;heading&gt;Reminder&lt;/heading&gt;
&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;
&lt;/note&gt;
&lt;/xml&gt;</pre></td></tr></tbody></table><p>或者象下面这样嵌入外部单独的XML文件:</p><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;xml id="note" src="note.xml"&gt;
&lt;/xml&gt;</pre></td></tr></tbody></table><p>注意那个&lt;xml&gt;标记是一个HTML元素，而不是一个XML元素。<br /><br />8: 转意字符</p><p>不合法的XML字符必须被替换为相应的实体。<strong></strong></p><p>如果在XML文档中使用类似"<font color="#ff0000">&lt;</font>" 的字符, 那么解析器将会出现错误，因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:</p><p></p><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;message&gt;if salary &lt; 1000 then&lt;/message&gt;</pre></td></tr></tbody></table><p>为了避免出现这种情况，必须将字符"&lt;" 转换成实体，象下面这样:</p><p></p><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;message&gt;if salary <font color="#ff0000">&amp;lt;</font> 1000 then&lt;/message&gt;</pre></td></tr></tbody></table><p>下面是五个在XML文档中预定义好的实体:</p><p></p><table class="ex" cellspacing="0" width="50%" border="1"><tbody><tr><td width="39%">&amp;lt;</td><td width="17%">&lt;</td><td width="44%">小于号</td></tr><tr><td>&amp;gt;</td><td>&gt;</td><td>大于号</td></tr><tr><td>&amp;amp;</td><td>&amp;</td><td>和</td></tr><tr><td>&amp;apos;</td><td>'</td><td>单引号</td></tr><tr><td>&amp;quot;</td><td>"</td><td>双引号</td></tr></tbody></table><br />实体必须以符号"&amp;"开头，以符号";"结尾<b>。<br /></b><br />9：CDATA部件<br /><p>在CDATA内部的所有内容都会被解析器忽略。</p><p>如果文本包含了很多的"&lt;"字符和"&amp;"字符——就象程序代码一样，那么最好把他们都放到CDATA部件中。</p><p>一个 CDATA 部件以"<b><font color="#ff0000">&lt;![CDATA[</font></b>" 标记开始，以"<b><font color="#ff0000">]]&gt;</font></b>"标记结束:</p><p></p><table class="ex" cellspacing="0" width="100%" border="1"><tbody><tr><td><pre>&lt;script&gt;
<font color="#0000ff">&lt;![CDATA[</font>
function matchwo(a,b)
{
if (a &lt; b &amp;&amp; a &lt; 0) then
{
return 1
}
else
{
return 0
}
}
<font color="#0000ff">]]&gt;</font>
&lt;/script&gt;</pre></td></tr></tbody></table><p>在前面的例子中，所有在CDATA部件之间的文本都会被解析器忽略。</p><h3>CDATA注意事项:</h3><p>CDATA部件之间不能再包含CDATA部件（不能嵌套）。如果CDATA部件包含了字符"<font color="#ff0000">]]&gt;</font>" 或者"<font color="#ff0000">&lt;![CDATA[</font>" ，将很有可能出错哦。</p><p>同样要注意在字符串"<font color="#ff0000">]]&gt;</font>"之间没有空格或者换行符。<br /><br />10: <br /><br /><br /></p><img src ="http://www.cppblog.com/qiaodong/aggbug/16858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qiaodong/" target="_blank">乔栋</a> 2006-12-26 10:10 <a href="http://www.cppblog.com/qiaodong/archive/2006/12/26/16858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>