首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLStarlet和RSS

XMLStarlet和RSS
EN

Stack Overflow用户
提问于 2013-09-20 23:20:21
回答 1查看 901关注 0票数 1

我似乎无法通过xmlstarlet实现这个基本的xslt查询。

我肯定我遗漏了一些显而易见的东西,但在我的生活中,我无法理解这个语法,所以请有人指点我。

XML Starlet命令:

代码语言:javascript
复制
xml sel -t -m "//rdf:RDF/item" -v link -v description -v link ./sss.rdf

sss.rdf:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:ev="http://purl.org/rss/1.0/modules/event/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/">
    <channel rdf:about="http://baltimore.craigslist.org/search/sss?catAbb=sss&amp;amp;format=rss&amp;amp;maxAsk=150&amp;amp;minAsk=50&amp;amp;query=ipod%20touch%205g&amp;amp;srchType=A">
        <title>craigslist baltimore | all for sale / wanted search "ipod touch 5g"</title>
        <link>http://baltimore.craigslist.org/search/sss?catAbb=sss&amp;amp;maxAsk=150&amp;amp;minAsk=50&amp;amp;query=ipod%20touch%205g&amp;amp;srchType=A</link>
        <description />
        <dc:language>en-us</dc:language>
        <dc:rights>&amp;copy; 2013 craigslist</dc:rights>
        <dc:publisher>robot@craigslist.org</dc:publisher>
        <dc:creator>robot@craigslist.org</dc:creator>
        <dc:source>http://baltimore.craigslist.org/search/sss?catAbb=sss&amp;amp;format=rss&amp;amp;maxAsk=150&amp;amp;minAsk=50&amp;amp;query=ipod%20touch%205g&amp;amp;srchType=A</dc:source>
        <dc:title>craigslist baltimore | all for sale / wanted search "ipod touch 5g"</dc:title>
        <dc:type>Collection</dc:type>
        <syn:updateBase>2013-09-20T09:23:41-07:00</syn:updateBase>
        <syn:updateFrequency>1</syn:updateFrequency>
        <syn:updatePeriod>hourly</syn:updatePeriod>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://baltimore.craigslist.org/ele/4039527375.html" />
            </rdf:Seq>
        </items>
    </channel>
    <item rdf:about="http://baltimore.craigslist.org/ele/4039527375.html">
        <title><![CDATA[Unlocked Optimus Lg Phone (Baltimore) $150]]></title>
        <link>http://baltimore.craigslist.org/ele/4039527375.html</link>
        <description>OR WE CAN HAVE A SWAP FOR AN IPOD TOUCH 5g<![CDATA[
&#9679;Optimus Lg Phone For Sale At 150.00 The Original Price Was $180.00
&#9679;It Does Not Include The Charger, But You Can Find It At Walmart For $4.00
&#9679;The Phone Was Only Used For 2-3 Months
&# [...]]]></description>
        <dc:date>2013-09-01T10:14:06-07:00</dc:date>
        <dc:language>en-us</dc:language>
        <dc:rights>&amp;copy; 2013 craigslist</dc:rights>
        <dc:source>http://baltimore.craigslist.org/ele/4039527375.html</dc:source>
        <dc:title><![CDATA[Unlocked Optimus Lg Phone (Baltimore) $150]]></dc:title>
        <dc:type>text</dc:type>
        <dcterms:issued>2013-09-01T10:14:06-07:00</dcterms:issued>
    </item>
</rdf:RDF>

我想要的输出:

代码语言:javascript
复制
Unlocked Optimus Lg Phone (Baltimore) $150
OR WE CAN HAVE A SWAP FOR AN IPOD TOUCH 5g
    &#9679;Optimus Lg Phone For Sale At 150.00 The Original Price Was $180.00
    &#9679;It Does Not Include The Charger, But You Can Find It At Walmart For $4.00
    &#9679;The Phone Was Only Used For 2-3 Months
    &# [...]
http://baltimore.craigslist.org/ele/4039527375.html
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-21 04:51:47

这个XmlStarlet命令:

代码语言:javascript
复制
xml sel -N purl="http://purl.org/rss/1.0/" -t -m "//rdf:RDF/purl:item" -v purl:title -n -v purl:description -n -v purl:link -n ./sss.rdf

产生所需的输出:

代码语言:javascript
复制
Unlocked Optimus Lg Phone (Baltimore) $150
OR WE CAN HAVE A SWAP FOR AN IPOD TOUCH 5g
&amp;#9679;Optimus Lg Phone For Sale At 150.00 The Original Price Was $180.00
&amp;#9679;It Does Not Include The Charger, But You Can Find It At Walmart For $4.00
&amp;#9679;The Phone Was Only Used For 2-3 Months
&amp;# [...]
http://baltimore.craigslist.org/ele/4039527375.html

解释:

关键是要注意输入文档有一个默认名称空间,这将导致itemtitledescriptionlink位于http://purl.org/rss/1.0/名称空间中。定义-N purl="http://purl.org/rss/1.0/"允许我们在XPaths中指定这些元素时使用purl前缀。没有purl名称空间前缀,XPaths就不匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18927226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档