深入Python3(十一) XML

0.摘要

  基本是和 x m l xml xml相关的一些知识,个人感觉用处不是特别大,有需求再细致了解也不迟。
  本书的大部分章节都是以样例代码为中心的。但是 x m l xml xml这章不是;它以数据为中心。最常见的 x m l xml xml应用为“聚合订阅( s y n d i c a t i o n   f e e d s syndication\ feeds syndication feeds)”,它用来展示博客,论坛或者其他会经常更新的网站的最新内容。大多数的博客软件都会在新文章,新的讨论区,或者新博文发布的时候自动生成和更新 f e e d feed feed
在这里插入图片描述

<?xml version='1.0' encoding='utf-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en'>
  <title>dive into mark</title>
  <subtitle>currently between addictions</subtitle>
  <id>tag:diveintomark.org,2001-07-29:/</id>
  <updated>2009-03-27T21:56:07Z</updated>
  <link rel='alternate' type='text/html' href='http://diveintomark.org/'/>
  <link rel='self' type='application/atom+xml' href='http://diveintomark.org/feed/'/>
  <entry>
    <author>
      <name>Mark</name>
      <uri>http://diveintomark.org/</uri>
    </author>
    <title>Dive into history, 2009 edition</title>
    <link rel='alternate' type='text/html'
      href='http://diveintomark.org/archives/2009/03/27/dive-into-history-2009-edition'/>
    <id>tag:diveintomark.org,2009-03-27:/archives/20090327172042</id>
    <updated>2009-03-27T21:56:07Z</updated>
    <published>2009-03-27T17:20:42Z</published>
    <category scheme='http://diveintomark.org' term='diveintopython'/>
    <category scheme='http://diveintomark.org' term='docbook'/>
    <category scheme='http://diveintomark.org' term='html'/>
  <summary type='html'>Putting an entire chapter on one page sounds
    bloated, but consider this &amp;mdash; my longest chapter so far
    would be 75 printed pages, and it loads in under 5 seconds&amp;hellip;
    On dialup.</summary>
  </entry>
  <entry>
    <author>
      <name>Mark</name>
      <uri>http://diveintomark.org/</uri>
    </author>
    <title>Accessibility is a harsh mistress</title>
    <link rel='alternate' type='text/html'
      href='http://diveintomark.org/archives/2009/03/21/accessibility-is-a-harsh-mistress'/>
    <id>tag:diveintomark.org,2009-03-21:/archives/20090321200928</id>
    <updated>2009-03-22T01:05:37Z</updated>
    <published>2009-03-21T20:09:28Z</published>
    <category scheme='http://diveintomark.org' term='accessibility'/>
    <summary type='html'>The accessibility orthodoxy does not permit people to
      question the value of features that are rarely useful and rarely used.</summary>
  </entry>
  <entry>
    <author>
      <name>Mark</name>
    </author>
    <title>A gentle introduction to video encoding, part 1: container formats</title>
    <link rel='alternate' type='text/html'
      href='http://diveintomark.org/archives/2008/12/18/give-part-1-container-formats'/>
    <id>tag:diveintomark.org,2008-12-18:/archives/20081218155422</id>
    <updated>2009-01-11T19:39:22Z</updated>
    <published>2008-12-18T15:54:22Z</published>
    <category scheme='http://diveintomark.org' term='asf'/>
    <category scheme='http://diveintomark.org' term='avi'/>
    <category scheme='http://diveintomark.org' term='encoding'/>
    <category scheme='http://diveintomark.org' term='flv'/>
    <category scheme='http://diveintomark.org' term='GIVE'/>
    <category scheme='http://diveintomark.org' term='mp4'/>
    <category scheme='http://diveintomark.org' term='ogg'/>
    <category scheme='http://diveintomark.org' term='video'/>
    <summary type='html'>These notes will eventually become part of a
      tech talk on video encoding.</summary>
  </entry>
</feed>

1.5分钟XML速成

   x m l xml xml是一种描述层次结构化数据的通用方法。 x m l xml xml文档包含由起始和结束标签( t a g tag tag)分隔的一个或多个元素( e l e m e n t element element)。以下也是一个完整的(虽然空洞) x m l xml xml文件:
在这里插入图片描述

  第一行是 f o o foo foo元素的起始标签。
  第二行是 f o o foo foo元素对应的结束标签。就如写作、数学或者代码中需要平衡括号一样,每一个起始标签必须有对应的结束标签来闭合(匹配)。
  元素可以嵌套到任意层次。位于 f o o foo foo中的元素 b a r bar bar可以被称作其子元素
在这里插入图片描述

   x m l xml xml文档中的第一个元素叫做根元素( r o o t   e l e m e n t root\ element root element)。并且每份 x m l xml xml文档只能有一个根元素。以下不是一个 x m l xml xml文档,因为它存在两个“根元素”。
在这里插入图片描述

  元素可以有其属性( a t t r i b u t e attribute attribute),它们是一些名字-值( n a m e − v a l u e name-value namevalue)对。属性由空格分隔列举在元素的起始标签中。一个元素中属性名不能重复。属性值必须用引号包围起来。单引号、双引号都是可以。
在这里插入图片描述

   f o o foo foo元素有一个叫做 l a n g lang lang的属性。 l a n g lang lang的值为 e n en en
   b a r bar bar元素则有两个属性,分别为 i d id id l a n g lang lang。其中 l a n g lang lang属性的值为 f r fr fr。它不会与 f o o foo foo的那个属性产生冲突。每个元素都其独立的属性集。
  如果元素有多个属性,书写的顺序并不重要。元素的属性是一个无序的键-值对集,跟 P y t h o n Python Python中的字典对象一样。另外,元素中属性的个数是没有限制的。
  元素可以有其文本内容( t e x t   c o n t e n t text\ content text content)。
在这里插入图片描述

  如果某一元素既没有文本内容,也没有子元素,它也叫做空元素。
在这里插入图片描述

  表达空元素有一种简洁的方法。通过在起始标签的尾部添加/字符,我们可以省略结束标签。上一个例子中的 x m l xml xml文档可以写成这样:
在这里插入图片描述

  就像 P y t h o n Python Python函数可以在不同的模块( m o d u l e s modules modules)中声明一样,也可以在不同的名字空间( n a m e s p a c e namespace namespace)中声明 x m l xml xml元素。 x m l xml xml文档的名字空间通常看起来像 U R L URL URL。我们可以通过声明 x m l n s xmlns xmlns来定义默认名字空间。名字空间声明跟元素属性看起来很相似,但是它们的作用是不一样的。
在这里插入图片描述

   f e e d feed feed元素处在名字空间 h t t p : / / w w w . w 3. o r g / 2005 / A t o m http://www.w3.org/2005/Atom http://www.w3.org/2005/Atom中。
   t i t l e title title元素也是。名字空间声明不仅会作用于当前声明它的元素,还会影响到该元素的所有子元素。
  也可以通过 x m l n s : p r e f i x xmlns:prefix xmlns:prefix声明来定义一个名字空间并取其名为 p r e f i x prefix prefix。然后该名字空间中的每个元素都必须显式地使用这个前缀( p r e f i x prefix prefix</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值