`
totoxian
  • 浏览: 1080508 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

读取RDF格式的RSS文件

阅读更多

读取RDF格式的RSS文件

左直拳

RSS目前据说有3种格式:0.9X1.02.0。用得最多的是2.0。对于RSS2.0,没有什么难的,在C#里,采用

XmlDocument xml = new XmlDocument();

xml.LoadXml(xmlFile);

XmlNodeList nodes = xml.SelectNodes("/rss/channel/item");

就可以轻松获得里面的每一个节点。

但对于RDF格式(也许就是RSS1.0吧?RSS的定义很混乱,搞不清楚)就不行了。比如,现在有一个RSS,格式如下:

<?xml version="1.0" encoding="utf-8"?>

<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="/china/rss.xsl" ?>

<rdf:RDF xmlns:rdf="http://www.w3.org/<chsdate w:st="on" isrocdate="False" islunardate="False" day="22" month="2" year="1999">1999/02/22</chsdate>-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/">

……

<item rdf:about="http://www.bbc.co.uk/go/wsy/pub/rss/1.0/-/china/learningenglish/takeawayenglish/tae/2007/01/070131_music_in_schools.shtml">

<title xml:lang="zh-Hans">Music in Schools 校园音乐课程</title>

<link>http://www.bbc.co.uk/go/wsy/pub/rss/1.0/-/china/learningenglish/takeawayenglish/tae/2007/01/070131_music_in_schools.shtml</link>

<description xml:lang="zh-Hans">Can you play a musical instrument? Learn all about British school music lessons in Take Away English. </description>

<dc:date><chsdate w:st="on" isrocdate="False" islunardate="False" day="31" month="1" year="2007">2007-01-31</chsdate>T17:30:57+00:00</dc:date>

<dc:format>text/plain</dc:format>

<dc:language>zh-Hans</dc:language>

<dc:publisher>http://www.bbcchina..com.cn</dc:publisher>

<dc:creator>http://www.bbc.co.uk/china</dc:creator>

<dc:type>Tae, Takeaway English</dc:type>

</item>

<item>……</item>

<item>……</item>

……

</rdf:RDF>

对于这种格式,表面上看,也是XML嘛,可直接用上面的方式去读取就是不行,一个节点也拿不到。

开始以为是什么XPath写得不对,一会儿xml.SelectNodes("//RDF/item")不行,一会儿xml.SelectNodes("//rdf:RDF/item")也不行。

后来才知道,要指定命名空间。

留意一下RSS文件中的代码

<rdf:RDF xmlns:rdf="http://www.w3.org/<chsdate w:st="on" isrocdate="False" islunardate="False" day="22" month="2" year="1999">1999/02/22</chsdate>-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/">

两个红色部分分别表示两个不同的命名空间。其中第二个(xmlns="http://purl.org/rss/1.0/")没有前缀,说明它是默认命名空间,则其所有子孙节点没有指定前缀的,都使用该命名空间。比如,<item>就属于默认命名空间,<dc:date>就属于命名空间dc

明白了这个道理,就可以写C#代码如下:

XmlNamespaceManager nsMgr = new XmlNamespaceManager(xml.NameTable);

nsMgr.AddNamespace("rdf", "http://www.w3.org/<chsdate w:st="on" isrocdate="False" islunardate="False" day="22" month="2" year="1999">1999/02/22</chsdate>-rdf-syntax-ns#");

nsMgr.AddNamespace("rss", "http://purl.org/rss/1.0/");

XmlNodeList nodes = xml.SelectNodes("/rdf:RDF/rss:item", nsMgr);

这样就可以获得节点<item>的集合了。

同理,要获得<Item>里面的子节点也应该要指定命名空间:

string link = nodes[i].SelectSingleNode("rss:link",nsMgr).InnerText

分享到:
评论

相关推荐

    rdf2rdf:此Java工具将RDF数据从任何RDF格式转换为任何其他格式。-开源

    此Java工具将您的RDF文件从任何RDF格式转换为任何其他格式。 它基于openRDF.org Sesame项目,并包装在一个jar文件中,以方便使用。

    Rdf-File是一个处理结构化文本文件的工具组件

    1. **解析与序列化**:该组件能够解析RDF格式的文件,将其内容转化为内存中的数据结构,同时也支持将内存中的RDF数据序列化回文件,便于数据的读写操作。这在数据交换、存储和分析中非常实用。 2. **模型操作**:...

    rdf2rdf-1.0.1-2.3.1.jar

    NT(N-Triples)文件格式是RDF的一种简单文本表示,每行包含一个三元组,易于读取和处理,常用于数据交换和存储。RDF2RDF.jar工具正是为了解决这个问题,它将OWL文件的复杂信息转化为NT文件,便于数据的进一步分析和...

    KTP900触摸屏下载时报错,无法找到ProjectCharacteristics.rdf文件_解决办法.docx

    在使用KTP900触摸屏的过程中,可能会遇到一个常见的问题,即在尝试下载项目到设备时,系统提示“无法找到ProjectCharacteristics.rdf文件”。这个错误可能会让许多用户感到困惑,因为这个文件对于项目的正常运行至关...

    入门教程 - 使用 N3 初探 semantic web 和 RDF

    与传统的万维网相比,Semantic Web不仅仅依赖于人类可读的网页,而是通过使用结构化和半结构化的数据格式,如RDF(Resource Description Framework),使得机器能够理解和处理网络上的信息。这将极大地提升网络信息...

    adams/car路面文件

    在MSC.ADAMS中道路时域道路模型是通过属性文件来表达的,而属性文件的创建是使用独立插件Road Builder来完成,通过Road Builder还可以创建IPG和ARM格式包括路肩的3D道路。它支持以下种类的路面几何轨迹  常规仿真...

    关系数据库转RDF工具--DB2RDF

    DB2RDF工具专门用于将传统的关系数据库数据转换成RDF格式,以便更好地实现数据互操作性和语义集成。 DB2RDF工具的核心功能在于它能自动处理关系数据库中的结构化数据,并将其转换为RDF三元组的形式。三元组由主语、...

    rdf-vcf:RDF.rb阅读器,用于各种调用格式(VCF)文件

    RDF :: VCF 这是阅读器插件,用于变异调用格式(VCF)文件,在生物信息学中广泛使用。 该项目源于和在,并在期间进一步发展。 注意:由于基于Java的VCF解析器,目前该项目需要JRuby 9.0(或更高版本)。 我们希望...

    DB-RDF.rar_JAVA rdf_RDF数据_database to rdf_rdf_rdf java

    描述指出这是一个"Java实现的数据库和RDF之间的转换程序",这意味着这个程序可能是用Java编程语言编写的,能够将传统的关系型数据库(如MySQL、Oracle等)中的数据转换为RDF格式,或者相反,将RDF数据导入到数据库中...

    InfoBar RDF/RSS Ticker-开源

    RDF(Resource Description Framework)和 RSS(Really Simple Syndication)是两种广泛用于发布和订阅在线内容的数据格式,尤其在新闻聚合、博客和网站更新中应用广泛。 RDF 是一种元数据标准,由万维网联盟(W3C...

    asd.rar_ASD_rdf_rdf sax

    这些示例通常会包含读取RDF文件,处理RDF三元组,以及可能的错误处理逻辑。 2. **SAX解析原理**:可能包含有关SAX解析器工作原理的文档,解释如何注册事件处理器,以及如何响应开始元素、结束元素、字符等事件。 3...

    RDF教程经典推荐

    **资源描述框架(RDF)**是万维网联盟(W3C)制定的一种标准模型,用于表示互联网上的数据和信息。RDF的核心思想是使用URI(统一资源标识符)来标识网络上的任何实体,无论是具体的网页、人、事件还是抽象的概念。...

    jdbc4rdf3x

    从提供的文件名“jdbc43x”来看,这可能是优化后的JDBC驱动程序的代码库或库文件,用于与RDF3X 3.x版本兼容。用户可能需要这个文件来替换原来的驱动,以便在他们的应用中利用这些优化。 在实际应用中,使用“jdbc4...

    jena RDF API入门(汇总)

    无论是创建OntModel实例、配置不同类型的推理机还是读取外部RDF文件,Jena都提供了一套完整的解决方案。希望这份文档能够帮助大家更好地理解和使用Jena,为后续深入研究语义网技术打下坚实的基础。

    RDF推荐标准[网上资料整理].pdf

    - **与其他数据格式的关系**:除了XML外,RDF还可以转换成JSON-LD等多种格式,这为数据的存储和传输提供了灵活性。 #### 六、总结 通过《RDF入门推荐标准》的学习,读者不仅能了解RDF的基本原理,还能掌握如何在...

    RDF.rar_rdf

    RDF的核心概念包括URI(Uniform Resource Identifier)作为资源的唯一标识,以及使用XML语法进行序列化,使得数据能够被网络上的机器读取和解析。 在压缩包中的文件名列表: 1. "Base_Donn.m" - 这可能是用MATLAB...

    使用 Jena API 处理 RDF

    通过使用Jena API,我们可以有效地处理和查询RDF数据,无论是从文件中读取数据,还是在内存中构建和操作RDF图。Jena的强大之处在于它的灵活性和丰富的功能集,使得开发者能够轻松地在Java应用程序中集成语义网和知识...

    前端开源库-rdf-formats-common

    在实际项目中,`rdf-formats-common-master`这个压缩包文件很可能是库的源码主分支,包含完整的代码、文档、测试用例以及可能的示例项目。开发者可以通过阅读源码、查看文档或者运行示例来了解如何集成和使用这个库...

    前端开源库-rdf-serializer-n3

    2. **RDFJS接口**:RDFJS提供了一组标准化的JavaScript接口,用于在JavaScript环境中处理RDF数据,包括读取、写入和操作RDF图。 3. **N3(Notation3)**:一种简洁的文本格式,用于表示RDF数据,增加了对缩写的支援...

    《An Introduction to RDF and the Jena RDF API》的译文

    根据提供的文件信息,本文将对RDF(Resource Description Framework)以及Jena RDF API进行详细的介绍与解析。通过本文,读者可以了解到RFA的基本概念、如何使用Jena API处理RDF数据,以及相关的示例代码。 ### 1. ...

Global site tag (gtag.js) - Google Analytics