在java中将文本文件转换为xml文档

在java中将文本文件转换为xml文档,java,xml,Java,Xml,有人能给我推荐一种从java文本文件创建xml文档的方法吗? 我已经编写了一些程序,它不符合我的需要 我正在尝试创建一个程序,将pdf文件转换为ppt,因为我需要将pdf转换为文本文件,然后将该文本文件转换为xml以提取功能。但现在我无法继续,因为xml文件无法正确获取 public class TextToXml { StreamResult out; TransformerHandler th; public void convrt(File f) {

有人能给我推荐一种从java文本文件创建xml文档的方法吗? 我已经编写了一些程序,它不符合我的需要

我正在尝试创建一个程序,将pdf文件转换为ppt,因为我需要将pdf转换为文本文件,然后将该文本文件转换为xml以提取功能。但现在我无法继续,因为xml文件无法正确获取

public class TextToXml {
    StreamResult out;
    TransformerHandler th;


    public void convrt(File f)
    {
        try{

        String fname=f.getName().replaceAll("pdf", "txt");
        FileInputStream fstream = new FileInputStream(fname); 
        DataInputStream in = new DataInputStream(fstream);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        out = new StreamResult("djksgh.xml");
        openXml();
        String strLine;
        int cnt=0;
        char strarray[]=new char[250];
        char c;

        while ((strLine = br.readLine()) != null)   {
            for(int i=0;i<strLine.length();i++)
            {
                c=strLine.charAt(i);
                strarray[i]=c;
            }
           if( (Character.isDigit(strarray[0]))&&(strarray[1]=='.')&&(Character.isWhitespace(strarray[2]))&&(Character.isLetter(strarray[3])))
            {
                processhead(strLine);

            }
            else if((Character.isDigit(strarray[0]))&&(strarray[1]=='.')&&(Character.isDigit(strarray[2]))&&(strarray[3]=='.')&&(Character.isWhitespace(strarray[4]))&&(Character.isLetter(strarray[5])))
            {
               processShead(strLine); 
            }
            else if((Character.isDigit(strarray[0]))&&(strarray[1]=='.')&&(Character.isDigit(strarray[2]))&&(strarray[3]=='.')&&(Character.isDigit(strarray[4]))&&(Character.isWhitespace(strarray[5]))&&(Character.isLetter(strarray[6])))
            {
                processSS(strLine);
            }
            else 
            {
                process(strLine);
            }
        }    

        in.close();
        closeXml();
        }
          catch (Exception e)
        {
          System.err.println("Error: " + e.getMessage());
        }

    }

    public void openXml() throws ParserConfigurationException, TransformerConfigurationException, SAXException {
        SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
        th = tf.newTransformerHandler();

        // pretty XML output
        Transformer serializer = th.getTransformer();
        serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
        serializer.setOutputProperty(OutputKeys.INDENT, "yes");

        th.setResult(out);
        th.startDocument();
        th.startElement(null, null, "MyXml", null);
    }
    public static boolean isupper(String str) {
        for(int i=0;i<str.length();i++)
        {
            char c=str.charAt(i);
            if(c>=97&&c<=122)
            {
                return false;
            }
        }
        return true;
    }


    public void process(String s) throws SAXException {

        th.startElement(null, null, "Sentence", null);
        th.characters(s.toCharArray(), 0, s.length());
        th.endElement(null, null, "Sentence");
    }

    public void processhead(String s) throws SAXException {
        th.startElement(null, null, "Section", null);
        th.characters(s.toCharArray(), 0, s.length());
        th.endElement(null, null, "Section");
    }
    public void processShead(String s) throws SAXException {
            th.startElement(null, null, "SubSection", null);
            th.characters(s.toCharArray(), 0, s.length());
            th.endElement(null, null, "SubSection");
        }
    public void processSS(String s) throws SAXException {
        th.startElement(null, null, "SubSubSection", null);
        th.characters(s.toCharArray(), 0, s.length());
        th.endElement(null, null, "SubSubSection");
    }


    public void closeXml() throws SAXException {
        th.endElement(null, null, "MyXml");
        th.endDocument();
    }
}
公共类TextToXml{
输出结果;
变形金刚;
公共void convrt(文件f)
{
试一试{
字符串fname=f.getName().replaceAll(“pdf”、“txt”);
FileInputStream fstream=新的FileInputStream(fname);
DataInputStream in=新的DataInputStream(fstream);
BufferedReader br=新的BufferedReader(新的InputStreamReader(in));
out=newstreamresult(“djksgh.xml”);
openXml();
弦斯特林;
int-cnt=0;
char strarray[]=新字符[250];
字符c;
而((strLine=br.readLine())!=null){

对于(int i=0;i通常我创建一个包含所有信息的Java Bean,然后使用JaxB或其他技术将其转换为XML。

XML文件本质上是一个结构化信息。问题是转换后的文本文件是否有任何特定的结构,或者只有文本和标点符号。要转换为XML,文本至少应该有一些str可以重新转换为XML的结构。因此,从上面给出的文本来看,问题是,元素的内容是什么,如果是,是哪个元素。如果不是,那么元素/属性的单个单词内容是什么,如果是,是哪个。现在您将看到,上面的文本无法以任何有意义的方式真正转换为XML


但是,如果您的文本具有某种结构,例如标题:有人可以建议或提问:我可以用java从文本文件创建xml文档吗?然后在解析文本文件后将其转换为xml。建议将一些元信息放入文本文件。

正确的顺序是什么?您可以显示输入和输出的摘录吗?actually我正试图将一篇pdf格式的ieee论文转换成一个文本文件,然后再转换成一个xml文件。因此,输入文件的大小在我的术语“摘录”中有点大。否则,很难猜测。此外,您应该在内部放置一些trace/println来查找问题。我在问题中添加了生成的xml文件。这有点让人困惑:您的问题是:将文本转换为xml。现在您想解析xml(您生成了吗?)?我正在开发一个桌面应用程序,直接从pdf格式的文件生成ppt。因此,你能建议其他方法吗?但现在我想从文本文件中获取xml文件。可以使用这个库吗?你能帮我完成吗?我不明白你所说的具体结构。可以在这里上传吗?我有附加了我想与代码一起转换的文本文件。@ Rinoy,用您的文本文件,它不容易,我可以给出几个指针1)第一行把它看作发行商,读取第一行添加一个被称为DOM树的元素,并将该值设置为第一行2)。第二行看起来是源代码,所以阅读第二行并添加一个名为DOM的元素,并将元素的值设置为第二行的内容3)第三行似乎是源代码的详细信息,阅读第三行并添加一个名为的元素;正如我所说的,文档需要将结构转换为XML,但困难在于这就像我想查找每一行并分配rite???@Rinoy一样,正如我提到的,您必须从第一行开始,并根据您的文本文件结构填充XML元素上的值。如果可能,在导出时,您是否可以向文本文档添加一些结构,例如标题:使用Dimensi进行图像匹配我不知道在你的例子中,当你从PDF转换时,是否有可能做到这一点,但是,PDF确实有一个定义的结构,看看你是否能抓住它