Given the following data:
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:dc="http://purl.org/dc/elements/1.
<channel rdf:about="http://www.gmanews.tv/">
<title>GMANews.TV</title>
<description> GMA News.tv bring you the latest news from GMA News teams and highlights of your favorite shows. Subscribe now and stay up-to-date with GMA News.tv.</description>
<link>http://www.gmanews.tv/</link>
</channel>
<item rdf:about="http://www.gmanews.tv/story/232365/world/magnitude-59-quake-hits-chilean-coast-no-damage">
<dc:format>text/html</dc:format>
<dc:date>2011-09-14T16:39:22+08:00</dc:date>
<dc:source>http://www.gmanews.tv/story/232365/world/magnitude-59-quake-hits-chilean-coast-no-damage </dc:source>
<title><![CDATA[Magnitude-5.9 quake hits Chilean coast, no damage]]></title>
<link>http://www.gmanews.tv/story/232365/world/magnitude-59-quake-hits-chilean-coast-no-damage </link>
<description><![CDATA[SANTIAGO - A magnitude 5.9 quake hit just off the coast of central Chile early on Wednesday, but the state emergency office said there were no reports of damage.]]></description>
</item>
<item rdf:about="http://www.gmanews.tv/story/232362/nation/house-minority-blames-pnoys-advisers-for-legal-setbacks">
<dc:format>text/html</dc:format>
<dc:date>2011-09-14T16:04:51+08:00</dc:date>
<dc:source>http://www.gmanews.tv/story/232362/nation/house-minority-blames-pnoys-advisers-for-legal-setbacks </dc:source>
<title><![CDATA[House minority blames PNoy's advisers for legal 'setbacks']]></title>
<link>http://www.gmanews.tv/story/232362/nation/house-minority-blames-pnoys-advisers-for-legal-setbacks </link>
<description><![CDATA[Members of the opposition at the House of Representatives on Wednesday blamed President Benigno Aquino III's advisers for the various legal "setbacks" suffered by his administration and advised him to consider replacing some of his advisers.]]></description>
</item>
<item rdf:about="http://www.gmanews.tv/story/232356/nation/ex-sharia-judge-20-others-may-testify-in-poll-fraud-probe">
<dc:format>text/html</dc:format>
<dc:date>2011-09-14T15:19:45+08:00</dc:date>
<dc:source>http://www.gmanews.tv/story/232356/nation/ex-sharia-judge-20-others-may-testify-in-poll-fraud-probe </dc:source>
<title><![CDATA[Ex-Shari'a judge, 20 others may testify in poll fraud probe]]></title>
<link>http://www.gmanews.tv/story/232356/nation/ex-sharia-judge-20-others-may-testify-in-poll-fraud-probe </link>
<description><![CDATA[The former Shari'a court judge who claimed t开发者_StackOverflow社区o have helped Gloria Macapagal-Arroyo cheat in the 2004 presidential elections and at least 20 others may serve as witnesses in the joint investigation by the Commission on Elections and Department of Justice on the alleged poll fraud, Comelec chief Sixto Brillantes Jr. said Wednesday.]]></description>
</item>
</rdf:RDF>
Now I want to get the details of all the elements inside <item>
tag . This is trivial but I am new to python . I am not quite sure how I am going to parse rdf and then extract all the <item>
inside.
Edit: I can not use any third partie libraries as my script is going to run on embeded system.
lxml provides a nice way to handle all things XML. An example for the XML you posted:
from lxml import etree
document = etree.parse('your-example-xml.rdf')
root = document.getroot()
# Namespace shortcuts
ns = root.nsmap.get(None)
rdf = root.nsmap.get('rdf')
for item in root.xpath('purl:item', namespaces={'purl': ns}):
print item.attrib.get('{%s}about' % rdf)
print item.xpath('purl:description/text()', namespaces={'purl': ns})
print
However, if it's only RDF you are parsing there might be RDF specific libraries available.
Since third party libraries are not an option, here's the same code done with Python's built-in ElementTree:
from xml.etree import ElementTree as etree
document = etree.parse(open('your-example-xml.rdf'))
root = document.getroot()
ns_purl = 'http://purl.org/rss/1.0/'
ns_rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
for item in root.findall('{%s}item' % ns_purl):
print item.attrib.get('{%s}about' % ns_rdf)
print item.find('{%s}description' % ns_purl).text
print
精彩评论