因为总是懒得搞清楚那些不知所云的庞大的企业级的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

解决方案 »

  1.   

    下面是一个老一点的测试文件:不过也大致能说明问题。测试的项目是游标扫描一个文件的所用的时间(毫秒)。[F]是指使用FileStream,[M]是指使用MemoryStream作为文件的载体。“/”左边的数值是逆向扫描时间,右边的是正向扫描时间。所有的步骤都还没有优化。此外有点奇怪为什么逆向的反而快些……test.txt,  file size = 37,534
    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暂时还不能识别。大家可以用记事本打开然后再保存就行了。
      

  2.   

    大学毕业设计的时候用c语言做了一个xml的编译器,没有全部做完,老师照顾让我蒙混过关了。
      

  3.   

    不错。
    但下面不正确的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没有那么难,而且都很成熟了
      

  4.   

    to Eastunfail(龍子龍孫) (诚彼娘之非悦)谢谢你的测试!结果实际是这样的:
    因为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谢谢各位的支持!!!
      

  5.   

    DTD是W3C定义的,而Schema是MS的。所以即使Schema比DTD先进,但还是要大众一点你华工的啊?我也是啊,不过是分校的,呵呵~~~~
      

  6.   

    Schema已经是W3C的推荐标准了
    "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
      

  7.   

    to Eastunfail(龍子龍孫) (诚彼娘之非悦)呵呵,我就是华南理工的啦……不过在广州的时候也都简称华工的:P