关于这个XML文件的困惑
问题描述:
使用SAX方式解析XML文件没什么问题
但是这个XML文件特别
不同层次深度却几乎都有name这个节点
endElement的时候没法判断name到底是table的还是field抑或是user的
尝试了很多办法没有解决这个问题,请大家帮下忙,谢谢,文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by hanxinliang (hanxingliang.com) -->
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="structure.xsd">
<database>
<name>resource</name>
<description>For US Use</description>
<language>English</language>
<version>
<major>1</major>
<minor>1</minor>
<revison>1</revison>
</version>
<users>
<user>
<name>root</name>
<password>pwd</password>
<privilege>dbowner</privilege>
</user>
</users>
<tables>
<table>
<name>students</name>
<description>学生表</description>
<users>
<username>root</username>
</users>
<fields>
<name>id</name>
<localname>id</localname>
<description>记录序号</description>
<type>mediumint</type>
<dataformat/>
<length>8</length>
<isnull>false</isnull>
<isindex>true</isindex>
<isautoinc>true</isautoinc>
<autoincstart>1</autoincstart>
<autoincstep>1</autoincstep>
<default>1</default>
<defaulttype/>
</fields>
<fields>
<name>stu_no</name>
<localname>stu_no</localname>
<description>学生编号</description>
<type>varchar</type>
<dataformat/>
<length>50</length>
<isnull>false</isnull>
<isindex>false</isindex>
<isautoinc>false</isautoinc>
<autoincstart>1</autoincstart>
<autoincstep>1</autoincstep>
<default/>
<defaulttype/>
</fields>
<fields>
<name>lesson_no</name>
<localname>lesson_no</localname>
<description>成绩编号</description>
<type>varchar</type>
<dataformat/>
<length>50</length>
<isnull>false</isnull>
<isindex>false</isindex>
<isautoinc>false</isautoinc>
<autoincstart>1</autoincstart>
<autoincstep>1</autoincstep>
<default/>
<defaulttype/>
</fields>
</table>
</tables>
<views>
<view>
<name>user_view</name>
<code>create view v_test as select top 100 percent * from users order by name</code>
</view>
</views>
<storeprocs>
<storeproc>
<name>user_proc</name>
<code>Create Procedure UPD_Users @FirstName nvarchar(30) AS UPDATE Users SET FirstName = @FirstName WHERE UserID = @UserID</code>
</storeproc>
</storeprocs>
</database>
</root>
问题点数:50、回复次数:3Top
1 楼DreamDragon_NEU(梦龙)回复于 2005-05-23 10:25:30 得分 25
不用sax解析,换成DOM试一试Top
2 楼Delphi2C()回复于 2005-05-23 10:32:55 得分 0
谢谢 DreamDragon_NEU(梦龙)
这个文件是同学帮忙写的
他当时也没考虑到name重复的问题
而且老师看了后意思就是让我"用SAX做吧"Top
3 楼DelphiStudy(拿下BCD就去搞C++)回复于 2005-05-30 12:35:48 得分 25
SAX
方式有局限性
XML文件还有很多解析方法
跟你导师说说换个方法
JDOM/DOM4j都可以Top




