2016-09-26 39 views
1

嗨提取信息我有具有表單數據這樣如何使用拆分或其它功能,用於從具有文本文件的XML標記

<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 

沒有任何人有任何見解

+0

如果你使用java,那麼JAXB可能會幫助你。 –

回答

0

假設你的文件是真的一個純文本文件不是XML文件,你可以使用一個正則表達式提取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(); 
    } 
} 

輸出:

<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 

的Java 8 ,它應該是:

Pattern pattern = Pattern.compile("<([^>]+)>([^<]*)</[^>]+>"); 
try (Stream<String> stream = Files.lines(Paths.get(filePath))) { 
    stream.forEach(
     line -> { 
      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(); 
     } 
    ); 
} 
+0

呀文件是一個文本文件,但有一些XML標籤data.Tags模式沒有預先定義我的意思是說標籤計數遇到像this.Paid文本文件改成技術支持納撒尼爾齊亞 支付給媒體關係芙蓉

+0

由於薩科它的Working.I需要做一個在outcome.I略有變化需要提取這樣的標籤數據... 伊恩射精Sociis Natoque有限公司伊恩後打印原文以及:PersonName Cum Sociis Natoque Limited:OrgName –

+0

No ..在第一林e原始文本並在下一行提取xml標籤數據。 –

0

使用分割每行:

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

這將是大小爲2的你想要的東西的數組。

相關問題