[翻译][Nokogiri官方教程] 解析HTML/XML文档 / Parsing an HTML/XML Document
From a String
- From a File
- From the Internet
- Parse Options
- Encoding
原文: Parsing an HTML/XML Document
解析HTML/XML文档
从字符串读取
html_doc = Nokogiri::HTML("<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>")
xml_doc = Nokogiri::XML("<root><aliens><alien><name>Alf</name></alien></aliens></root>")
变量 html_doc 与 xml_doc 是Nokogiri 对象1, 具有各种属性与方法, 具体见此. 这些具体内容会在其他章节讲述.
*1 原文为documents, 在此译为"对象"
从文件读取
无需读取文件到字符串. Nokogiri会进行这项工作.
doc = File.open("blossom.xml") { |f| Nokogiri::XML(f) }
从网络读取
require 'open-uri'
doc = Nokogiri::HTML(open("http://www.threescompany.com/"))
解析选项(Parse Options)
Nokogiri提供了一些影响解析方式的选项. 详见: read about them here, 以下是最常用的选项:
NOBLANKS- Remove blank nodesNOENT- Substitute entitiesNOERROR- Suppress error reportsSTRICT- Strict parsing; raise an error when parsing malformed documentsNONET- Prevent any network connections during parsing. Recommended for parsing untrusted documents.
用法:
doc = Nokogiri::XML(File.open("blossom.xml")) do |config|
config.strict.nonet
end
或
doc = Nokogiri::XML(File.open("blossom.xml")) do |config|
config.options = Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NONET
end
编码
在程序内部, 字符串正常是以UTF-8编码储存. 返回文本值的方法将会返回UTF-8字符串. 返回XML的方法(例如to_xml, to_html, inner_html)会返回与源文件相同编码方式的字符串.
注意 / WARNING
某些文档声明了特定的编码方式, 但实际是用的却是另外一种. 这种情况下解析器会使用哪一种编码?
所谓的数据仅仅是由一个一个的字节组成的长串. 我们人为地为它附加了含义. 同样的一组字节在不同的编码下代表着一些互不相同的字符, 因此100%准确地推断出编码是不可能的. 即使做的相当好的libxml2库也不能总是成功地推断出编码.
让Nokogiri使用正确的编码方式来处理文档的最好方式就是显示设定编码. 以下为示例:
doc = Nokogiri.XML('<foo><bar /><foo>', nil, 'EUC-JP')
[翻译][Nokogiri官方教程] 解析HTML/XML文档 / Parsing an HTML/XML Document的更多相关文章
- JAVA读取XML,JAVA读取XML文档,JAVA解析XML文档,JAVA与XML,XML文档解析(Document Object Model, DOM)
使用Document Object Model, DOM解析XML文档 也可参考我的新浪博客:http://blog.sina.com.cn/s/blog_43ac5543010190w3.html ...
- 使用LINQ TO XML 创建xml文档,以及读取xml文档把内容显示到GridView例子
首先,准备了一个Model类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- java中用jdom创建xml文档/将数据写入XML中
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...
- 使用dom4j解析XML文档
dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不 ...
- JavaEE实战——XML文档DOM、SAX、STAX解析方式详解
原 JavaEE实战--XML文档DOM.SAX.STAX解析方式详解 2016年06月22日 23:10:35 李春春_ 阅读数:3445 标签: DOMSAXSTAXJAXPXML Pull 更多 ...
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
- 浅谈用java解析xml文档(四)
继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...
- 使用DOM4J解析XML文档,以及使用XPath提取XML文档
使用DOM4J解析XML文档 需要首先下载DOM4J工具包.这是个第三方工具包 在使用DOM4J解析的时候需要导入 DOM4J的JAR包 下载DOM4J工具包->在MyEclipse中新建lib ...
随机推荐
- JZOJ 3388. 【NOIP2013模拟】绿豆蛙的归宿
3388. [NOIP2013模拟]绿豆蛙的归宿 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limi ...
- 【转载】MQTT的学习之Mosquitto集群搭建
本文出自:http://www.cnblogs.com/yinyi521/p/6087215.html 文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 ...
- django开发傻瓜教程-1-安装和HelloWorld
安装 sudo pip install Django 新建项目 django-admin startproject XXX 启动项目 进入主目录下 python manage.py runserver ...
- Codeforces Round #460 (Div. 2)-D. Substring
D. Substring time limit per test3 seconds memory limit per test256 megabytes Problem Description You ...
- 2、python中的数字
第二篇开始谈谈python中的数据. 一.前言 python中的数字包含了整数.浮点数.复数三种.在python的早期版本,或许可以看到正数被分为长整数与短整数,后来被取消了,因此这里不作讨论.通常我 ...
- Fiddler用AutoResponder实现app升级异步更新
先说一下我自己理解的异步更新:用app异步升级举例,app是否升级的检查是在启动app时访问服务器的,把app本地的最新版本号与服务器端的最新版本号做对比,假如不一致,则提示升级.但本次已经打开使用a ...
- FreeMarker的<#if></#if>标签
<#if target??> xxxx </#if> 上面这段代码判断target??是否为null,如果不为null时才可以执行if里面的内容,为null时则不进到 if里面 ...
- 读取手机联系人,并用listview显示
读取手机联系人,用到的就是一个contentprovider. 数据库里面有三张重要的表 raw_contact 里面有所有联系人的数据 data 每个联系人的所有数据 mime-type 每条数据的 ...
- Java-读取txt生成excel
本段代码的目的是从txt文本中读取相应格式的数据,然后写入到对应格式的excel文档中 在敲本段代码的时候,也学习了一些其它知识点,如下: 1.byte[] b_charset= String.get ...
- Vue声明渲染以及axios实例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...