2016-11-25 69 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>"