一个目录下面有许多的子目录,每个子目录下有一个html文件和一个和html文件关联的pdf文件,我想用java编个程序把所有的.html格式文件检索出来并且应用jtidy转换为xml格式的,再使用jdom解析xml文件(除去无用的冗余的显示信息)只需要得到里面的有用信息,生成另外一个标准的xml文件,把最后得到的xml和原来的pdf文件批量放到oracle数据库中,请问高手
1.如果可能的话程序应该如何编写?(给出分步代码也可)
2.如何解决使用jtidy转换成xml文件的中文字符问题?
3.解析xml文件使用jdom恰不恰当,如何使用?
4.最后的xml文件和pdf文件怎么一起入库?
拜托,多谢!

解决方案 »

  1.   

    “应用jtidy转换为xml格式的“,这一步可没你想想得那么简单,不只是字符编码问题,字符编码只是小问题,你最好自己写,不要用中间件,更容易控制;“(除去无用的冗余的显示信息)只需要得到里面的有用信息”,这一步就更不简单了,不痛苦几个月是得不到结果滴。“最后的xml文件和pdf文件怎么一起入库?”:放进去不是难事,难在“一起”上,你自己去和甲骨文问一下吧。你要做什么事,我大概了解,我作过像近似的事,个中滋味只有作过才知道。
      

  2.   

    第一个问题
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    public class Text {    public static void main(String[] args) {
            getFile(new File("src"));
        }    private static void getFile(File file) {
            if (file.isFile()){
                String fileName = file.getName();
                if (fileName.indexOf("java") != -1){
                    try {
                        StringBuffer sb = new StringBuffer();
                        FileInputStream fis = new FileInputStream(file);
                        byte[] b = new byte[8192];
                        while (fis.read(b) != -1){
                            sb.append(new String(b));
                        }
                        System.out.println(file.getName());
                        System.out.println(sb.toString().trim());
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            } else if (file.isDirectory()){
                File[] files = file.listFiles();            
                for (int i = 0; i < files.length; i++) {
                    getFile(files[i]);
                }
            } 
        }
    }
      

  3.   

    回zhgna(悠闲生活):“应用jtidy转换为xml格式的“,这一步我想可以算是解决了,通过转换编码格式就能得到中文正确显示,至少在altova xmlspy里面是格式正常的,我想用dom解析问题应该不是很大吧,不至于痛苦几个月吧,只是最后一部有点难办,不知你怎么解决的,能不能指导一下,先多谢了
    回Neil_Dang(C∞l Dog):谢谢你的代码,对我很有帮助,不过还有一个问题,你知道我需要批量转换怎么可以把html转换后的文件自动生成以xml为后缀的的xml文件?
      

  4.   

    那上面的代码,好像大家都写得出来,但是没有大用,除非你要转换的网页是写得非常规矩的,否则后面的情况我就不太清楚了,因为我不知道你的那个 jtidy 的威力如何,如果它的抗元素标签不对称能力比较好的话,那你就省心了,总之我做这个步骤的时候没有过什么东西,是自己写的,我也不知道你的应用标准是什么,我想你可以先测试一下,从网上随即找1000个网页,看看整理成xml文件的正确率是多少,然后再考虑后边的问题,祝你成功!!
      

  5.   

    谢谢楼上,我的所有的html格式是一样的,只要一个可以,其他的肯定没问题,所以由html-xml基本算是解决,就是把xml(其实是xhtml)中提取有用信息这一步不知采取什么方法了,比如:
    <?xml version="1.0" encoding="utf-8"?>
    <html>
    <body>
    <table>
     <tr>
      <td>姓  名:</td>
      <td>张三</td>
    </tr>
    <tr>
      <td>年  龄:</td>
      <td>20</td>
    </tr>
    </table>
    </body>
    </html>
    怎么能转换成
    <?xml version="1.0" encoding="utf-8"?>
    <介绍>
     <姓名>张三</姓名>
     <年龄>20</年龄>
    </介绍>
    只需要把“张三”和“20”从原来的xml文件中提取出来就好了
      

  6.   

    提取信息已经解决,我用的xsl文件来操作原来的xml文件来生成只有有用信息的xml。只是文件头没有,如何能输出到新xml文件这个东西<?xml version="1.0">
      

  7.   

    搂主可以试试下面的一个网页:
    <body>
    <table>
    <table>
    <tr>
    a
    </tr>
    <tr>
    </tr>
    <tr>
    <td>
    b
    </td>
    </tr>
    </table>
    <table>
    </body>
      

  8.   

    晕死,刚发完贴,搜了一下jtidy,介绍说它有补偿功能,功能体现的怎么样,你还真要测以下,万一碰上复杂的网页,会导致xml文件出错,后面的解析出错。另外你说html文件的格式都一样,是完全一模一样吗(标签的个数和位置)?我真有点搞不懂了,如果是 html标签的个数和位置 完全一样,那你还费那么大劲转化什么呀!!直接查找字符串不就行了??
      

  9.   

    对啊,我的所有的html文件的格式是一模一样的,就是有数据不同而已,可是里面格式很混乱,许多标签没有封闭,所以我先转换成标准的xml格式就好办了,无论什么方法去解析都没有问题的
      

  10.   

    你转换的时候,用你现在用的东西能把所有的网页内容都转化过来吗?没有遗漏和错误?另外你可能误会我的意思了,看下面两个网页:
    <body>
    </br>
    </body>

    <body>
    </body>
    我认为这两个网页格式不同,你是否认为他们是相同的呢?只要有一个标签的位置或者类型不同就算格式不同。
      

  11.   

    是的,你写的这两个网页格式是不同的,不过我的确实是相同,格式和标签完全一样的,只是里面的数据不同而已,另外我最后的一步,你有什么想法呢?就是把pdf和xml一起放入oracle数据库中,使用java编程应该没问题吧?