我如何处理sweet_xml中的大小写不敏感?

时间:2016-11-25 00:18:29

标签: xml xpath elixir

我使用sweet_xml来解析一些可能如下所示的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属性的地图列表,后者是href节点的REF。我可以这样做:

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

但是,我想在节点名称中处理任何类型的大小写。例如,<Ref href... /><title>应该有效。

我想在不改变节点值的情况下这样做,所以我不能只是String.downcase整个事情。

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如Jim Garrison在评论中提到的那样,XML本身就是区分大小写的,这就是为什么开箱即用的库不太可能提供解决方案的原因。好消息是,您希望为节点的值保留大小。这很容易:<>内的所有内容都可能会被低估:

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

以上产生(省略了相关部分):

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