Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将.txt转换为XML_Java_Xml_File Conversion - Fatal编程技术网

Java 如何将.txt转换为XML

Java 如何将.txt转换为XML,java,xml,file-conversion,Java,Xml,File Conversion,我想制作一个java代码,它接受这个.txt并将其输出为.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.

我想制作一个java代码,它接受这个.txt并将其输出为.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 数据rtr Deme_MS_GDA_DRGH R_2LOAM_OML13 R_OML13_OLMUA 线路R_LG_OML13_2LOAM_线路类型20 0.500 0.250 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 关闭MT-1个R2LOAM_OML13_LSMT-1个e 0.000 NT-1个R2loam_OML13_NTR-1个R2loam_OML13_QK R2loam_GG_uuuuuuuuuuuuuuuuuu0.000 质量0x0 短0x0-1-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>


照目前的情况,我认为没有直接的方法来做这件事


您可以尝试对文件进行迭代,使用一些自定义逻辑自己解析它,然后使用诸如从头开始构建XML之类的方法。

似乎是正则表达式的一个例子。java通过类支持这些

请参见下面的示例并尝试它

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);
    }

}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类RegexDemo{
公共静态void main(最终字符串[]args){
最终字符串数据=“#data rtr Deme_MS_GDA_DRGH R_2LOAM_OML13 R_OML13_OLMUA”;
最终模式=模式。编译(“^#数据\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)\\s+(\\w+)”);
最终匹配器匹配器=PATTERN.Matcher(数据);
if(matcher.matches()){
最后一个字符串xmlData=String.format(“”,matcher.group(1),matcher.group(2),matcher.group(3),matcher.group(4));
System.out.println(xmlData);
}
}

}

您可以尝试使用XSL,并使用xalan处理器将其转换为XML。该结构看起来非常简单。简单的方法是逐行读取文件,检查标识符是什么(第一个单词),并创建指定的元素。至于如何创建有效的xml,请看一下这个示例