我想创建一个带有.txt的java代码并将其输出为.xml。 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>
答案 0 :(得分:0)
按原样,我认为没有直接的做法。
您可以尝试迭代文件,使用一些自定义逻辑自行解析,然后使用StAX之类的东西从头开始构建XML。
答案 1 :(得分: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);
}
}
}