2015-10-02 111 views
1

我試圖讀取使用MATLAB波蘭樹庫的下列XML文件:http://zil.ipipan.waw.pl/Sk%C5%82adnica?action=AttachFile&do=view&target=Sk%C5%82adnica-frazowa-0.5-TigerXML.xml.gzMATLAB:讀取HTML的代碼(XML內)

波蘭字母似乎被編碼爲HTML碼:http://webdesign.about.com/od/localization/l/blhtmlcodes-pl.htm

例如,ł代表'ł'。如果我用打開的樹庫「UTF-8」,我得到這樣kłaniał的話,這實際上應顯示爲數k ł阿尼亞ł'

現在,我看到2個選項正確讀取的樹庫:

  1. 直接讀取XML文件,以便將HTML代碼轉換爲相應的字符。
  2. 首先以非解碼格式保存文字(例如kłaniał),然後再轉換文字。

是否有可能在MATLAB中執行2個選項之一(或兩者)?

+1

你試過[xmlread](http://de.mathworks.com/help/matlab/ref/xmlread.html)嗎?對我來說,它會自動忽略這些角色。 – swenzel

+0

你可以在這裏下載我想要分析的樹庫:http://zil.ipipan.waw.pl/Sk%C5%82adnica?action=AttachFile&do=view&target=Sk%C5%82adnica-frazowa-0.5-TigerXML。 xml.gz 我嘗試過'xmlread'。不幸的是,xml文件太大,無法用該函數打開,所以我使用'fopen'。 –

回答

0

非MATLAB的解決方案是通過一些外部工具對文件進行預處理。例如,在安裝Ruby的情況下,可以使用HTMLentities gem來取消所有特殊字符。

sudo gem install htmlentities 

file.xml是應該由ascii-only字符組成的文件名。在Ruby代碼轉換的文件可能是這樣的:

#!/usr/bin/env ruby 

require 'htmlentities' 
xml = File.open("file.xml").read 
converted_xml = HTMLEntities.new.decode xml 
IO.write "decoded_file.xml", xml 

(運行該文件,不要忘記chmod +x它,使其可執行文件)。 或者更緊湊,作爲一個班輪

ruby -e "require 'htmlentities';IO.write(\"decoded_file.xml\",HTMLEntities.new.decode(File.open(\"file.xml\").read))" 

然後,您可以按照自己的喜好進行後處理的XML。