текстовый файл в формате XML преобразования Java - PullRequest
2 голосов
/ 17 июня 2011

У меня есть текстовый файл, и я хочу преобразовать его в XML-файл в java: прочитайте файл в java, а затем преобразуйте в xml.

Contact
Arun_niit
Arun_niit
nura_e@yahoo.co.in
Contact
Contact
Bống MũnHải
Hải Anh Bống Mũn
http://www.facebook.com/profile.php?id=689849077
Contact

Я хочу вывод в следующем порядке:

<contact>
<Firstname>Arun_niit</Firstname>
<Secondname>Arun_niit</Secondname>
<Email>nura_e@yahoo.co.in</Email>
</contact>
<contact>
<Firstname>Bống MũnHải</Firstname>
<Secondname>Hải Anh Bống Mũn</Secondname>
<URL>http://www.facebook.com/profile.php?id=689849077</URL>
</contact>

Пожалуйста, помогите мне, ребята, и примеры кодов будут высоко оценены.

Это правильный способ сделать это, пожалуйста ... [code]

  import java.io.*;
  import java.io.ObjectInputStream.GetField;
  import org.w3c.dom.*;
  import javax.xml.parsers.*;
  import javax.xml.transform.*;
  import javax.xml.transform.stream.*;
  import javax.xml.transform.dom.*;
  import java.util.Scanner;

public class Item  {

private String Name;
private String LName;
private String Email;
public static void main (String args[]) {

public static void readFile(File file)  
{
Scanner freader = new Scanner("D:/juin17.part");
String line = null;
while (freader.hasNextLine()) {
    line = freader.nextLine();
   if(line==contact){
Item item = new item();
    item.Name =freader.nextLine();
    item.LName =freader.nextLine();
    item.Email =freader.nextLine();
    freader.nextLine();
    }
    itemList.add(item);
}
freader.close();  
  }

 FileOutputStream fos = new FileOutputStream(info.file);
 OutputFormat of = new OutputFormat("XML","windows-1250",true);
 of.setIndent(1);
 of.setIndenting(true);
 ContentHandler hd = serializer.asContentHandler();
 hd.startDocument();
 AttributesImpl atts = new AttributesImpl();
 hd.startElement("","",info.category,atts);
 for (int i=0;i<itemList.size();i++)
{
   atts.clear();
    Item temp = new Item();
    temp = itemList.get(i);
    hd.startElement("","","FirstName",atts);
    hd.characters(temp.Name.toCharArray(),0,temp.Name.length());
    hd.endElement("","","FirstName");
    hd.startElement("","","LastName",atts);
    hd.characters(temp.LName.toCharArray(),0,temp.LName.length());
    hd.endElement("","","LastName");
    hd.startElement("","","Email",atts);
    hd.characters(temp.mail.toCharArray(),0,temp.mail.length());
    hd.endElement("","","EMail");
 }
 hd.endElement("","",info.category);
 hd.endDocument();
 fos.close();
 }
 }

Ответы [ 4 ]

3 голосов
/ 17 июня 2011

здесь - пример создания XML с использованием DOM я думаю, что вы можете изменить его в соответствии со своими целями.

если все, что вам нужно, это создать xml из текста, я думаю, это будет проще, чем использовать SAX

надеюсь, это поможет.

1 голос
/ 17 июня 2011
  import java.io.BufferedReader;
  import java.io.FileOutputStream;
  import java.io.FileReader;
  import java.util.regex.Pattern;
  import org.xml.sax.ContentHandler;
  import com.sun.org.apache.xml.internal.serialize.OutputFormat;
  import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
  import com.sun.xml.internal.bind.util.AttributesImpl;
  public class Item  {
  public static void main (String args[]) {
  item.readWrite("juin17.part","test.xml");
  }

  public static void readWrite(String fromFile, String toFile)  
  {
try{
    Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
    BufferedReader in = new BufferedReader(new FileReader(fromFile));
    FileOutputStream fos = new FileOutputStream(toFile);
    OutputFormat of = new OutputFormat("XML","windows-1250",true);
    of.setIndent(1);
    of.setIndenting(true);
    XMLSerializer serializer = new XMLSerializer(fos,of);
    ContentHandler hd = serializer.asContentHandler();
    hd.startDocument();
    AttributesImpl atts = new AttributesImpl();
    hd.startElement("","","CONTACTS",atts);
    String line = null,tag;
    while ((line=in.readLine())!=null) {
        if(line.equals("Contact")){
            line=in.readLine();
            hd.startElement("","","CONTACT",atts);
            int i=0;
            while(!line.equals("Contact")){
                if(i==0)
                    tag="FirstName";
                else if(i==1)
                    tag="LastName";
                else{
                    if(p.matcher(line).matches())
                        tag="EMail";
                    else
                        tag="URL";
                }
                hd.startElement("","",tag,atts);
                hd.characters(line.toCharArray(),0,line.length());
                hd.endElement("","",tag);
                i++;
                line=in.readLine();
            }
            hd.endElement("","","CONTACT");
        }
    }
    hd.endElement("","","CONTACTS");
    hd.endDocument();
    fos.close();
    in.close();
    }catch(Exception E){
        System.out.println("Cannot Generate XML!!!");
    }

  }
  }
0 голосов
/ 17 июня 2011
  1. Вам необходим цикл для чтения файла построчно, для этого я бы предложил BufferedReader.

  2. Внутри цикла вы проверяете последовательности строк, которые начинаются и заканчиваются на «Контакт».Каждый из них будет XML Element.Внутри этих последовательностей вы можете создавать XML Element s для каждого из элементов данных, т.е. Имя, Имя, Электронная почта, URL.

  3. Вы можете проверить, чтобы увидетьесли строка является адресом электронной почты, пытаясь создать InternetAddress, используя ее.Вы можете проверить, является ли строка URL-адресом, попытавшись создать из нее URL.

  4. Существует две стратегии записи выходных данных XML.Проще всего было бы построить весь XML-документ в памяти и затем записать его в файл, как только входной файл будет полностью прочитан.Если ваш входной файл очень большой, это может оказаться непрактичным, и вам может потребоваться записать каждый контакт Element в выходной поток перед началом следующего.

0 голосов
/ 17 июня 2011
    public static void readFile(File file)  {
    Scanner freader = new Scanner(file);
    String line = null;
    while (freader.hasNextLine()) {
        line = freader.nextLine();
       if(line==contact){
    Item item = new item();
        item.Name =freader.nextLine();
        item.LName =freader.nextLine();
        item.Email =freader.nextLine();
        freader.nextLine();
        }
        itemList.add(item);
    }
    freader.close();  
   }

Это поможет вам прочитать файл. Здесь Item - это класс с {Name, LName, Email}, itemList - это список массивов, поэтому сначала я читаю файл и сохраняю его в списке массивов, а затем использую arrayList для создания файла XML. Попробуйте объединить и то, и другое: чтение и запись в XML одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...