目录

  • HTML简介
    • 什么是HTML
    • HTML 标签
    • HTML 文档 = 网页
    • H使用 Notepad 或 TextEdit 来编写 HTML
      • 步骤一:启动记事本
      • 步骤一:启动记事本
      • 步骤二:用记事本来编辑 HTML
      • 步骤三:保存 HTML
      • 步骤四:在浏览器中运行这个 HTML 文件
  • XHTML简介
    • 什么是 XHTML?
    • 为什么使用 XHTML?
  • XML简介
    • 什么是 XML?
    • XML 与 HTML 的主要差异
    • 没有任何行为的 XML
    • XML 仅仅是纯文本
    • 通过 XML 您可以发明自己的标签
    • XML 不是对 HTML 的替代
    • XML 无所不在
    • XML 把数据从 HTML 分离
    • XML 简化数据共享
    • XML 简化数据传输
    • 一个 XML 文档实例
    • XML 文档形成一种树结构
    • 实例
    • XML 的属性值须加引号
  • drugbunk 解析

最近下载了drugbunk的XML格式的下载文件,目标是想得到所有药物分子的smiles,但是下载之后发现得到的却是酷似乱码的文件(如下图),特此与大家分享如何解析drugbunk下载后的XML文件到我们熟悉的excel形式。

HTML简介

在了解XML之前,需要先简单了解HTML。

什么是HTML

HTML 是用来描述网页的一种语言。

  • HTML 指的是超文本标记语言 (Hyper Text Markup Language)
  • HTML 不是一种编程语言,而是一种标记语言 (markup language)
  • 标记语言是一套标记标签 (markup tag)
  • HTML 使用标记标签来描述网页

HTML 标签

HTML 标记标签通常被称为 HTML 标签 (HTML tag)。

  • HTML 标签是由尖括号包围的关键词,比如 <html>
  • HTML 标签通常是成对出现的,比如<b> 和 <b>
  • 标签对中的第一个标签是开始标签,第二个标签是结束标签
  • 开始和结束标签也被称为开放标签和闭合标签

HTML 文档 = 网页

  • HTML 文档描述网页
  • HTML 文档包含 HTML 标签和纯文本
  • HTML 文档也被称为网页

Web 浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。浏览器不会显示 HTML 标签,而是使用标签来解释页面的内容:

<html>
<body><h1>我的第一个标题<h1><p>我的第一个段落。<p></body>
</html>

例子解释

  • <html> 与 <html> 之间的文本描述网页
  • <body> 与 <body> 之间的文本是可见的页面内容
  • <h1> 与 <h1> 之间的文本被显示为标题
  • <p> 与 <p> 之间的文本被显示为段落

H使用 Notepad 或 TextEdit 来编写 HTML

可以使用专业的 HTML 编辑器来编辑 HTML:

  • Adobe Dreamweaver
  • Microsoft Expression Web
  • CoffeeCup HTML Editor

不过,我们同时推荐使用文本编辑器来学习 HTML,比如 Notepad (PC) 或 TextEdit (Mac)。我们相信,使用一款简单的文本编辑器是学习 HTML 的好方法。

通过记事本,依照以下四步来创建您的第一张网页。

步骤一:启动记事本

步骤一:启动记事本

步骤二:用记事本来编辑 HTML

在记事本中键入 HTML 代码:

步骤三:保存 HTML

在记事本的文件菜单选择“另存为”。

当您保存 HTML 文件时,既可以使用 .htm 也可以使用 .html 扩展名。两者没有区别,完全根据您的喜好。

步骤四:在浏览器中运行这个 HTML 文件

启动您的浏览器,然后选择“文件”菜单的“打开文件”命令,或者直接在文件夹中双击您的 HTML 文件。

结果应该类似这样:

下面进入第二部分准备知识XHTML部分的讲解

XHTML简介

XHTML 是以 XML 格式编写的 HTML。

什么是 XHTML?

  • XHTML 指的是可扩展超文本标记语言
  • XHTML 与 HTML 4.01 几乎是相同的
  • XHTML 是更严格更纯净的 HTML 版本
  • XHTML 是以 XML 应用的方式定义的 HTML
  • XHTML 是 2001 年 1 月发布的 W3C 推荐标准
  • XHTML 得到所有主流浏览器的支持

为什么使用 XHTML?

因特网上的很多页面包含了“糟糕”的 HTML。

如果在浏览器中查看,下面的 HTML 代码运行起来非常正常(即使它并未遵守 HTML 规则):

<html>
<head>
<title>This is bad HTML</title>
<body>
<h1>Bad HTML
<p>This is a paragraph
</body>

XML 是一种必须正确标记且格式良好的标记语言。
今日的科技界存在一些不同的浏览器技术。其中一些在计算机上运行,而另一些可能在移动电话或其他小型设备上运行。小型设备往往缺乏解释“糟糕”的标记语言的资源和能力。

所以 - 通过结合 XML 和 HTML 的长处,开发出了 XHTML。XHTML 是作为 XML 被重新设计的 HTML。

XML简介

什么是 XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

XML 与 HTML 的主要差异

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

没有任何行为的 XML

XML 是不作为的。

也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。

下面是 John 写给 George 的便签,存储为 XML:

<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

上面的这条便签具有自我描述性。它拥有标题以及留言,同时包含了发送者和接受者的信息。

但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

XML 仅仅是纯文本

XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML。

不过,能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。

通过 XML 您可以发明自己的标签

上例中的标签没有在任何 XML 标准中定义过(比如 和 )。这些标签是由文档的创作者发明的。

这是因为 XML 没有预定义的标签。

在 HTML 中使用的标签(以及 HTML 的结构)是预定义的。HTML 文档只使用在 HTML 标准中定义过的标签(比如<p> 、<h1> 等等)。

XML 允许创作者定义自己的标签和自己的文档结构。

XML 不是对 HTML 的替代

XML 是对 HTML 的补充。

XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

对 XML 最好的描述是:

XML 是独立于软件和硬件的信息传输工具。

XML 无所不在

当我们看到 XML 标准突飞猛进的开发进度,以及大批的软件开发商采用这个标准的日新月异的速度时,真的是不禁感叹这真是令人叹为观止。

目前,XML 在 Web 中起到的作用不会亚于一直作为 Web 基石的 HTML。

XML 无所不在。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。

XML 把数据从 HTML 分离

如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。

通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。

通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。

XML 简化数据共享

在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。

XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。

这让创建不同应用程序可以共享的数据变得更加容易。

XML 简化数据传输

通过 XML,可以在不兼容的系统之间轻松地交换数据。

对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。

由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。

一个 XML 文档实例

XML 使用简单的具有自我描述性的语法:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。

下一行描述文档的根元素(像在说:“本文档是一个便签”):

<note>

接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>

最后一行定义根元素的结尾:

</note>

从本例可以设想,该 XML 文档包含了 John 给 George 的一张便签。

XML 文档形成一种树结构

XML 文档必须包含根元素。该元素是所有其他元素的父元素。

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有元素均可拥有子元素:

<root><child><subchild>.....</subchild></child>
</root>

父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。

所有元素均可拥有文本内容和属性(类似 HTML 中)。

实例


上图表示下面的 XML 中的一本书:

<bookstore>
<book category="COOKING"><title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price>
</book>
<book category="CHILDREN"><title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price>
</book>
<book category="WEB"><title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price>
</book>
</bookstore>

例子中的根元素是 。文档中的所有 元素都被包含在 中。

元素有 4 个子元素:、< author>、、。

XML 的属性值须加引号

与 HTML 类似,XML 也可拥有属性(名称/值的对)。

在 XML 中,XML 的属性值须加引号。请研究下面的两个 XML 文档。第一个是错误的,第二个是正确的:

<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>

drugbunk 解析

解析XML文件可以用untangle包,直接上代码~

import untangle
import pandas as pd
import numpy as np
import osfilename="D:\\drugbank\\full database.xml"objective = untangle.parse(filename)drugbank1 = pd.DataFrame(columns=["drugbank_id", "name",  "smiles"])i = -1for drug in objective.drugbank.drug:i = i + 1for id in drug.drugbank_id:if str(id["primary"]) == "true":drugbank1.loc[i, "drugbank_id"] = id.cdata# Drug namedrugbank1.loc[i, "name"] = drug.name.cdataj = 0#这里要写一个异常处理,因为并不是所有的药物都有 calculated_properties属性try:len(drug.calculated_properties.cdata) == 0except:print('1')else:if len(drug.calculated_properties.cdata) == 0:  continueelse:for property in drug.calculated_properties.property:if property.kind.cdata == "SMILES":drugbank1.loc[i, "smiles"] = property.value.cdata
#舍弃掉列表中没有smiles的药物
drugbank_smiles = drugbank1.dropna()
drugbank_smiles = drugbank_smiles.reset_index(drop=True)
#写入csv
drugbank_smiles.to_csv("D:\\drugbank_smiles.csv", encoding='utf-8', index=False)

结果

drugbank下载XML文件解析相关推荐

  1. XML文件解析 (下载)

    XML文件解析 (下载) main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  2. java怎么xml文件解析_Java对Xml文件解析

    JAVA 解析 XML 通常有两种方式,DOM 和 SAX. DOM 虽然是 W3C 的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一 ...

  3. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  4. android基础知识13:AndroidManifest.xml文件解析【转载】

    注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  5. Android开发历程_18(XML文件解析)

    前言  本文主要介绍在Android中怎样来解析XML文件.主要采用的是SAX机制,SAX全称为Simple API for XML,它既是一种接口,也是一个软件包.作为接口,SAX是事件驱动型XML ...

  6. Python3将xml文件解析为Python对象

    一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...

  7. 【VOC格式xml文件解析】——Python

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/4/26 12:49 # @Author : @linlianqin # @S ...

  8. dom4j工具类_基于DOM4J的XML文件解析类

    XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...

  9. XML文件解析-DOM4J方式和SAX方式

    最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...

最新文章

  1. 负载均衡工具haproxy安装,配置,使用
  2. java函数定义的要素_Java学习笔记八(方法)
  3. 注意android辅助服务事件不能用于保存
  4. 如何得到juniper的pe ip device_name filter name等
  5. 360手机浏览器_360手机浏览器9.0新功能测评
  6. 前端学习(682):switch和if else if
  7. 算法 - 贪心算法(集合覆盖问题求解)
  8. 专访头条搜索:从推荐到搜索,如何构建搜索技术的另一种可能?
  9. [mysql]三种方法为root账户指定密码
  10. [Tip]ActiveScaffold本地化
  11. win10添加桌面图标到开始屏幕
  12. 记账系统推荐金蝶精斗云_金蝶精斗云好用的免费的财务做账软件有哪些?
  13. 驱动人生:英伟达显卡驱动471.11官方版Win10+Win7最新下载地址
  14. 函数求和代码 matlab,一个简单求和函数的matlab实现(带程序耗时功能)
  15. vim 修改注释颜色 tab键
  16. 应届毕业生年薪50W,你敢相信吗?
  17. p标签中的文字垂直居中
  18. HDwiki 源代码 - 互动百科开源
  19. Android应用中实现系统“分享”接口
  20. “求同”不是最终目标,英特尔致力打造有“差异”的精彩

热门文章

  1. 大厂程序员跳槽去小公司当CTO,是一种怎样的体验?
  2. MySQL 性能优化之高阶神技
  3. 【Java】面试官灵魂拷问:if语句执行完else语句真的不会再执行吗?
  4. 2019年最受欢迎的JVM配置参数是怎样的?
  5. 面试官:你能聊聊高并发下的接口幂等性如何实现吗?
  6. 12位黄金技术大佬发出警告:一大波必读好书向你袭来!
  7. 生态伙伴 | 飞书携手ProcessOn助力企业高效远程办公,共同“战疫”
  8. 从DDD看企业级问题解决方案框架
  9. 数独简化版 (set去重)
  10. 计算机和网络历史地位,所谓“运营商的文字游戏”,其实是计算机和网络发展的客观历史导致的...