如何使用拆分或其他功能从具有xml标签的文本文件中提取信息

时间:2016-09-26 17:25:19

标签: java filereader

您好我有平面文本文件,其数据形式如下

<PersonName> Ian </PersonName> <OrgName> Cum Sociis Natoque Limited</OrgName>
<PersonName> Camilla </PersonName> <OrgName> Lorem Corporation </OrgName>
<PersonName> Addison </PersonName> <OrgName> Tempus Corp. </OrgName>
<PersonName> Arsenio </PersonName> <OrgName> Id LLP </OrgName>

我希望最终结果如下:

Ian: PersonName
Cum Sociis Natoque Limited: OrgName
Camilla: PersonName
.... so on

有没有人有任何见解

2 个答案:

答案 0 :(得分:0)

假设您的文件真的是纯文本文件而不是XML文件,您可以使用正则表达式来提取{之间的文本内容{1}}代码,如下:

XML

<强>输出:

Pattern pattern = Pattern.compile("<([^>]+)>([^<]*)</[^>]+>");
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
        Matcher matcher = pattern.matcher(line);
        while (matcher.find()) {
            System.out.printf("%s: %s ", matcher.group(2).trim(), matcher.group(1));
        }
        System.out.println();
    }
}

java 8 中,它将是:

<PersonName> Ian </PersonName> <OrgName> Cum Sociis Natoque Limited</OrgName>
Ian: PersonName Cum Sociis Natoque Limited: OrgName 
<PersonName> Camilla </PersonName> <OrgName> Lorem Corporation </OrgName>
Camilla: PersonName Lorem Corporation: OrgName 
<PersonName> Addison </PersonName> <OrgName> Tempus Corp. </OrgName>
Addison: PersonName Tempus Corp.: OrgName 
<PersonName> Arsenio </PersonName> <OrgName> Id LLP </OrgName>
Arsenio: PersonName Id LLP: OrgName 

答案 1 :(得分:0)

在每一行上使用拆分:

String[] parts = line.replaceAll("^.*?>", "").split("<.*?>");

这将是一个大小为2的数组,包含你想要的东西。