dtd 里面你要怎么区分表名和字段名?贴个例子上来.

解决方案 »

  1.   

    原来的要求是要将任何xml文件存入关系数据库,并且可以还原会原来的xml文件.要考虑到通用性.也就是不同结构的xml都要适应.(这正是我要问的)我的想法是:
    1.先由xml文件生成dtd.
    2.根据dtd建表.
    3.根据dtd将xml数据读出并存入数据库.
    4.根据dtd将数据从数据库中读出,并还原为原来的xml文件.
      

  2.   

    例如下面的dtd,可以将lws作为数据库名,lw作为表名,id和name作为字段名.
    现在碰到的困难是:
    1.如何识别出lws就是数据库名,特别是比较复杂dtd.
    2.同理,如何识别表名,字段名.
    (不同的用户可以给出不同结构的xml文件或dtd)<?xml version="1.0" encoding="GB2312" ?>
    <!ELEMENT name ( #PCDATA ) >
    <!ELEMENT lw ( id, name ) >
    <!ELEMENT lws ( lw ) >
    <!ELEMENT id ( #PCDATA ) >
      

  3.   

    name --> 无子节点,丢弃.
    lw   --> 存在(id,name) --> 可能为库名或表名,设个标志,并保存.
    lws  --> 存在(lw)   --> 子节点名跟上面的未知标志的lw做比较,若相同,lws 则为数据库,否则,再设标志,并保存(信息).循环...一旦确认一个是数据库,所有其他未知标志全部设定为表.(不知道这样符合你的规则不)
      

  4.   

    另外,保存的时候可以将该节点以及子节点的信息封装保存到List中.便于后面节点分析.
      

  5.   

    如果没有了dtd,可以根据数据库生成xml文件吗?
    特别是当数据库中有多个表的时候?
    (分数继续加)
      

  6.   

    如果没有了dtd,可以根据数据库生成xml文件吗?
    特别是当数据库中有多个表的时候?
    (分数继续加)