因为总是懒得搞清楚那些不知所云的庞大的企业级的XML接口,所以干脆自己写了一个简单点的,命名为[Xfi],意思就是:XML for Idiot……下载地址:http://www.silentsea.net/temp_data/xfi.2005.01.31.rar。里面包含了原代码的两个文件(Xfi*.pas)、一个简单的XML树形浏览器以及相关接口的简单解释(用程序打开xfidesc.xml就行了)。目前只制作了把XML导入一个树型结构的部分,不过对于很多的小型应用应该能派上点用场了。Xfi分为两个大块,底层用类似SAX的顺序扫描原理,然后在这个基础上建立了一个类似DOM的树结构。因为真正接触XML的时间还不长啦,所以对于程序的错漏大家一定不要手软……如果因为Bug太多而抓狂,不妨回帖建议把Xfi改名为Xbi(XML by Idiot):P
test_m.txt, file size = 341,200
test_l.txt, file size = 4,567,990[2005.01.17]
[F] [M]
block size = 15
test.txt 15/31 16/16
test_m.txt 172/422 78/110
test_l.txt 2391/5641 1 125/1515block size = 150
test.txt 16/47 15/16
test_m.txt 141/375 63/109
test_l.txt 2016/5031 1000/1313block size = 1500
test.txt 31/31 16/16
test_m.txt 218/390 125/110
test_l.txt 2859/5390 1828/1562另外说明一下:Windows产生的UTF-8文件的文件头是带有标示的,Xfi能够通过这个标志识别UTF-8文件。但是XML Spy生成的文件却不带标志,Xfi暂时还不能识别。大家可以用记事本打开然后再保存就行了。
但下面不正确的XML也可以打开:<?xml version="1.0"?>
<!DOCTYPE test
[
<!ELEMENT root (item*,brokenNode*)>
]>
<?xml-stylesheet type="text/xsl" href="Log.xsl"?>
<root>Text1
<!-- Comment 1-->Text2
<item id="1"/>Text3
<item id="2">Text4
<brokenNode
<!-- Comment 2-->
</root>
不过文档根节点却成了预处理器的父节点了,Comment 1跑到Text3后面了,DTD定义成了注释
Text1和Text2不见了,Text3跑到item[@id="1"]前面了,Comment 2成了2--解析尚未成功,同志仍需努力。可以参考w3c标准的XML: http://www.w3c.org/XML/
其实现在的一些DOM如Xerces、MSXML、JDOM没有那么难,而且都很成熟了
因为Text1,Text2以及Text3都是root下的Text,而我采取的策略是取最后的一个(当然也可以把所有的都用空格连起来),所以出现了Comment1在Text3后面的情况。然后关于DTD……其实我压根就没看DTD那个章节,直接跳到Schema去了:P。不过既然知道了,回头再恶补一下……至于Comment2变成2--,是因为前面的标记不全的缘故(补全了就没事了)。不过这也说明了我解析注释的优先级有问题……再研究……to ly_liuyang(Liu Yang)
看了你的主页,开始还以为是华工的师弟。呵呵,也差不多了……最后勘误一下:测试的某一行test_l.txt 2391/5641 1 125/1515其实应该是test_l.txt 2391/5641 1125/1515谢谢各位的支持!!!
"The XML Schema specification (Part 0: Primer, Part 1: Structures, and Part 2: Datatypes) is a Recommendation as of May 2001."
http://www.w3.org/XML/Activity.html#schema-wg