2012-08-10 121 views
0

我想制作一个采用此.txt并将其输出为.xml的java代码。 XML文件应该是老乡模式如如何将.txt转换为XML

文本文件:

 
DATA rtr Deme_MS_GDA_DRGH R_2LOAM_OML13 R_OML13_OLMUA 

LINE R_LG_OML13_2LOAM _LINETYP_20 0.500 0.250 0.000 0.000 0.000 0.000 0.000 0.000 0.000 

SHUT MT -1 R_2LOAM_OML13_LSMT -1 e 0.000 NT -1 R_2LOAM_OML13_NTR -1 a 0.000 MT -1 R_2LOAM_OML13_QK R_2LOAM_GG_____GG____ e 0.000 

MASS 0x0 

SHORT 0x0 -1 -1 -1 -1 

与输出XML应该是这样的:

<?xml version="1.0"?> 

<Field> 
<DATA feldsimtyp="rtr" feldtoptyp="Deme_MS_GDA_DRGH" feld="R_2LOAM_OML13" gegenfeld="R_OML13_OLMUA">    
<LINE   name="R_LG_OML13_2LOAM" leitungstyp="_LINETYP_20" leitungslaenge="0.500" grenzstrom="0.250" unsymL1="0.000" unsymL2="0.000" unsymL3="0.000" resistanz="0.000" reaktanz="0.000" betriebskapazitaet="0.000" erdkapazitaet="0.000"/ > 
<SHUT> 
    <SHUT typ="MT" meldung="-1" name="E_AOLM2_OLM14_VSLT" anschlussknoten="-1" einschaltzustand="e" kurzschlussstrom=0.000"/>  
    <SHUT typ="NT" meldung="-1" name="R_2LOAM_OML13_NTR" anschlussknoten="-1" einschaltzustand="a" kurzschlussstrom=0.000"/> 
    <SHUT typ="MT" meldung="-1" name="R_2LOAM_OML13_QK" anschlussknoten="R_2LOAM_GG_____GG____" einschaltzustand="e" kurzschlussstrom=0.000"/> 
</SHUT> 
    <MASS bitmsake="0x0"> 
    </MASS> 
<SHORT bitmaske="0x0" schalter1="-1" schalter2="-1" schalter3="-1" schalter4="-1"/> 
</Field> 
+1

那么你尝试? – 2012-08-10 09:34:04

+0

您可以尝试使用XSL并使用xalan处理器转换为XML – Azi 2012-08-10 09:36:43

+0

该结构看起来非常简单。简单的方法是逐行读取文件,检查标识符是什么(第一个字)并创建指定的元素。至于如何创建一个有效的XML看看这个例子[网站](http://www.javazoom.net/services/newsletter/xmlgeneration.html) – gkaran89 2012-08-10 09:37:10

回答

0

原样,我觉得有这样做的没有直接的方法它。

你可以尝试的是迭代文件,用一些自定义逻辑解析它,然后使用诸如StAX之类的东西从头开始构建XML。

+0

我试过了,你可以提供我任何代码? – user1589815 2012-08-11 11:08:11

0

似乎正则表达式的情况。 java支持这些类,通过Pattern类。

请参阅以下示例并尝试使用它。

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegexDemo { 

public static void main(final String[] args) { 
    final String data = "#DATA rtr Deme_MS_GDA_DRGH R_2LOAM_OML13 R_OML13_OLMUA"; 
    final Pattern PATTERN = Pattern.compile("^#DATA\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)$"); 
    final Matcher matcher = PATTERN.matcher(data); 
    if (matcher.matches()) { 
     final String xmlData = String.format("<DATA a='%s' b=%s c=%s d=%s />", matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(4)); 
     System.out.println(xmlData); 
    } 

} 

}