Aar*_*Lee 1 scala xml-namespaces
看着RSS,像Craigslist的(http://chambana.craigslist.org/cta/index.rss)这样的东西会给两个节点都命名空间,而没有命名空间。
就像是:
<item rdf:about="http://dallas.craigslist.org/sdf/cto/4206532641.html">
<title>
<![CDATA[ 1965 Pontiac Tempest GTO tribute ]]>
</title>
...tl;dr...
<dc:title>
<![CDATA[ 1965 Pontiac Tempest GTO tribute ]]>
</dc:title>
</item>
Run Code Online (Sandbox Code Playgroud)
就像是:
(item \ "title").text
Run Code Online (Sandbox Code Playgroud)
两次给出标题。如何访问命名空间节点?
您需要过滤结果NodeSeq:
val unprefixedTitle = (item \ "title").filter(_.prefix == null)
val dublinCoreTitle = (item \ "title").filter(_.prefix == "dc")
Run Code Online (Sandbox Code Playgroud)
这些过滤后的序列中的每个序列都将包含一个元素。
如果您拥有整个文档(或至少具有名称空间声明的部分),则可以按名称空间而不是前缀进行过滤,这会更可靠:
val dublinCoreTitle = (item \ "title").filter(
_.namespace == "http://purl.org/dc/elements/1.1/"
)
Run Code Online (Sandbox Code Playgroud)
现在,即使您正在处理恰巧将此名称空间映射到其他前缀的文档,也将获得所需的元素。
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |