2016-11-25 67 views
2

我使用sweet_xml解析某些XML,可能是這樣的:如何處理sweet_xml中的大小寫不敏感?

<ASX VERSION="3.0"> 
    <ENTRY CLIENTSKIP="NO"> 
    <TITLE>Item 1</TITLE> 
    <REF HREF="http://kexp-mp3-2.cac.washington.edu:8000/" /> 
    </ENTRY> 
</ASX> 

我想有一個titlefile屬性映射列表,其中後者是REF節點的href。我可以這樣做:

SweetXml.xpath(file, ~x"//ENTRY"l, name: ~x"./TITLE/text()", file: ~x"./REF/@HREF") 

但是,我想處理節點名稱中的任何類型的套管。例如,<Ref href... /><title>應該工作。

我想在不改變節點值的情況下做到這一點,所以我不能僅僅整合String.downcase

在此先感謝。

+2

好吧,XML是大小寫敏感的_by definition_,並且不區分大小寫將是迄今爲止出於規範,現有的圖書館不太可能支持它。由於sweet_xml源代碼位於GitHub上,因此最佳選擇可能是下載本地副本並將其修改爲不區分大小寫。 –

回答

0

正如在評論中提到由吉姆·加里森,XML本身是區分大小寫,這就是爲什麼有不可能是任何圖書館提供開箱即用的解決方案。好消息是,你想保留套管節點的值爲。這很簡單:內<>一切可能downcased:

Regex.replace(~r|\<.*?\>|, input, fn x -> String.downcase(x) end) 

上述方法產生(不相關的部分省略):

#⇒       ⇓ HERE 
#⇒ "<asx version=...<title>Item 1</title>...</asx>"