我使用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>
我想要一个具有title
和file
属性的地图列表,后者是href
节点的REF
。我可以这样做:
SweetXml.xpath(file, ~x"//ENTRY"l, name: ~x"./TITLE/text()", file: ~x"./REF/@HREF")
但是,我想在节点名称中处理任何类型的大小写。例如,<Ref href... />
或<title>
应该有效。
我想在不改变节点值的情况下这样做,所以我不能只是String.downcase
整个事情。
提前致谢。
答案 0 :(得分:0)
正如Jim Garrison在评论中提到的那样,XML
本身就是区分大小写的,这就是为什么开箱即用的库不太可能提供解决方案的原因。好消息是,您希望为节点的值保留大小。这很容易:<>
内的所有内容都可能会被低估:
Regex.replace(~r|\<.*?\>|, input, fn x -> String.downcase(x) end)
以上产生(省略了相关部分):
#⇒ ⇓ HERE
#⇒ "<asx version=...<title>Item 1</title>...</asx>"