整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

在字符串中处理 html 和 xml

习《Python Cookbook》第三版

将 HTML 或者 XML 实体如 &entity; 或 &#code; 替换为对应的文本。再者,你需要转换文本中特定的字符 (比如<, >, 或 &)。

如果你想替换文本字符串中的 ‘<’ 或者 ‘>’ ,使用 html.escape() 函数可以很容易的完成。比如:

import html

my_str = 'Elements are written as "<tag>text</tag>".'
print(my_str)	# Elements are written as "<tag>text</tag>".
print(html.escape(my_str))	# Elements are written as "<tag>text</tag>".
print(html.escape(my_str, quote=False))	# Elements are written as "<tag>text</tag>".

对于escape()方法的官方解释:

html.escape(s, quote=True)

Convert the characters &, < and > in string s to HTML-safe sequences. Use this if you need to display text that might contain such characters in HTML. If the optional flag quote is true, the characters (") and (') are also translated; this helps for inclusion in an HTML attribute value delimited by quotes, as in <a href="...">.

将字符串s中的字符&,<和>转换为HTML安全序列。 如果您需要在HTML中显示可能包含此类字符的文本,请使用此选项。 如果可选的标记quote为true,则还会翻译字符(“)和(');这有助于包含在用引号分隔的HTML属性值中,如<a href="...">中所示。

如果你正在处理的是 ASCII 文本,并且想将非 ASCII 文本对应的编码实体嵌入进去,可以给某些 I/O 函数传递参数 errors='xmlcharrefreplace' 来达到这个目。比如:

my_str = 'Spicy Jalapeño'

print(my_str.encode('ascii', errors='xmlcharrefreplace'))	# b'Spicy Jalapeño'

其中,xmlcharrefreplace的作用是:将非ascii字符替换为xml合适字符引用

字符引用通过其通用字符集/ Unicode代码点引用字符,并使用以下格式:

&#nnnn; 或者 &#xhhhh;

上边的例子非ascii码字符ñ,被替换为ñ;

更多的XML字符引用,可以查看WIKI网址:

https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

为了替换文本中的编码实体,你需要使用另外一种方法。如果你正在处理 HTML或者 XML 文本,试着先使用一个合适的 HTML 或者 XML 解析器。通常情况下,这些工具会自动替换这些编码值,你无需担心。

有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换,通常你只需要使用 HTML 或者 XML 解析器的一些相关工具函数/方法即可。比如:

my_str_special = 'This is a special character "<È>"'
print(html.unescape(my_str_special))	# This is a special character "<È>"


from xml.sax.saxutils import unescape
my_str_special_1 = 'The prompt is >>>'
print(unescape(my_str_special_1))	# The prompt is >>>

在生成 HTML 或者 XML 文本的时候,如果正确的转换特殊标记字符是一个很容易被忽视的细节。特别是当你使用 print() 函数或者其他字符串格式化来产生输出的时候。使用像 html.escape() 的工具函数可以很容易的解决这类问题。

如果你想以其他方式处理文本,还有一些其他的工具函数比如xml.sax.saxutils.unescapge() 可以帮助你。然而,你应该先调研清楚怎样使用一个合适的解析器。比如,如果你在处理 HTML 或 XML 文本,使用某个解析模块比如html.parse 或 xml.etree.ElementTree 已经帮你自动处理了相关的替换细节。

文介绍如何通过Java后端程序代码来展示如何将html转为XML。此功能通过采用Word API- Free Spire.Doc for Java 提供的Document.saveToFile()方法来实现;该方法支持的目标文档格式多达 30余种。另外,该API也提供了多种方法,如Document.saveToEpub()Document.saveToFile()Document.saveToImages()Document.saveToSVG()Document.saveToTxt()、Document.saveToTiff()等,可用于将源文件转为Epub、图片、文本文件等目标文档格式。

下面,将以html转为xml格式为例,介绍如何实现转换。以下是详细方法及步骤。


【关于如何导入jar包】

通过 Maven仓库 下载导入,如下配置pom.xml:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>5.2.0</version>
    </dependency>
</dependencies>

如需手动导入,需要下载 jar包 到本地,然后解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开“Project Structure”界面,执行如图步骤将本地路径下的jar文件手动引入Java程序:


【将HTML转为XML】

转换时,可参考如下代码步骤:

  • 创建Document类的对象。
  • 调用Document.loadFromFile(String fileName, FileFormat fileFormat)方法加载HTML文件。
  • 通过Document.saveToFile(String fileName, FileFormat fileFormat)方法保存为XML格式到指定路径。

Java

import com.spire.doc.*;

public class HTMLtoXML {
    public static void main(String[] args) {
        //创建Document类的对象
        Document doc = new Document();

        //加载html文件
        doc.loadFromFile("sample.html",FileFormat.Html);

        //保存为XML格式
        doc.saveToFile("HTMLtoXML.xml", FileFormat.Xml);
    }
}

转换效果:

—END—


原文出处:https://www.cnblogs.com/Yesi/p/16392430.html

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

学习更多JAVA知识与技巧,关注与私信博主(555),即可免费领取

用XMLSpy编辑与约束XML文件操作

一、XML文件介绍

可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。

XML文件格式是纯文本格式,在许多方面类似于HTML,XML由XML元素组成,每个XML元素包括一个开始标记(<title>),一个结束标记(</title>)以及两个标记之间的内容,例如,可以将XML元素标记为价格、订单编号或名称。标记是对文档存储格式和逻辑结构的描述。在形式上,标记中可能包括注释、引用、字符数据段、起始标记、结束标记、空元素、文档类型声明( DTD)和序言。

XML文件的作用是可以定义数据交流的标准或系统配置参数,有一段时间预测是可以替代HTML的标签语言,但是后来发展不理想,没有成为HTML网页的替代方案。但是XML文件在数据交流中还是非常有用的,尤其是在进行数据交流标准的定义中,不同用户按事先约定好的XML标签格式传递数据,双方就可以交流数据。其规范性要强于json文件格式

具体规则如下:

1、必须有声明语句。

XML声明是XML文档的第一句,其格式如下:

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

2、注意大小写

在XML文档中,大小写是有区别的。"<P>"和"<p>"是不同的标记。注意在写元素时,前后标记的大小写要保持一致。

3、XML文档有且只有一个根元素

XML文档必须有一个根元素,就是紧接着声明后面建立的第一个元素,其他元素都是这个根元素的子元素,根元素完全包括文档中其他所有的元素。根元素的起始标记要放在所有其他元素的起始标记之前;根元素的结束标记要放在所有其他元素的结束标记之后。例如

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

4、属性值使用引号

在HTML代码里面,属性值可以加引号,也可以不加。但是XML规定,所有属性值必须加引号(可以是单引号,也可以是双引号,建议使用双引号),否则将被视为错误。

<?xml version="1.0" encoding="utf-8"?>
		<data name="school_data">
					XXXXXX
		</data>

5、所有的标记必须有相应的结束标记

在HTML中,标记可以不成对出现,而在XML中,所有标记必须成对出现,有一个开始标记,就必须有一个结束标记,否则将被视为错误。

<?xml version="1.0" encoding="utf-8"?>
<data name=”school_data”>
	<school name=”ncist”>
		<myclass name="计算机B191">
            <student id="001">
                <realname>张一</realname>
                <sex>男</sex>
                <age>21</age>
            </student>
        </myclass>
	</school>
	<school name=”pku”>
		<myclass name="物联网B191">
            <student id="001">
                <realname>王一</realname>
                <sex>女</sex>
                <age>19</age>
            </student>
        </myclass>
	</school>
</data>

6、所有的空标记也必须被关闭

空标记是指标记对之间没有内容的标记,比如"<img></img>"等标记。在XML中,规定所有的标记必须有结束标记。

二、XMLSpy软件介绍

XMLSpy 是来自Altova的一款方便实用,功能强大的XML(标准通用标记语言的子集)编辑器。软件支持WYSWYG,支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的编辑,软件在原来的基础上增加了几个很有用的功能,会让XML代码的处理更容易,是J2EE,.NET和数据库开发人员不可缺少的高性能的开发工具。网上搜索需要的版本安装就可以了。

XMLSpy 软件界面

XMLSpy 编辑界面

三、利用XMLSpy软件编辑XML文件

1、建立一个XML样例文件

首先利用任意文本编辑器,建立一个普通的XML文件,里面含有基本的XML数据结构。

<?xml version="1.0" encoding="UTF-8" ?>
<data>
    <school name="ncist001">
        <myclass name="计算机001">
            <student id="001">
                <realname>张一</realname>
                <sex>男</sex>
                <age>21</age>
            </student>
        </myclass>
    </school>
</data>

2、利用XMLSpy软件生成约束文件

利用XMLSpy软件打开此文件,分析生成约束XSD文件。这步很关键。会提示是否应用约束等,基本都是默认确认就可以了。软件自动在XML文件中建立约束的语句。这种方法可以快速生成约束文件,在此基础上进行修改,能够快速完成约束文件的生成。

带有约束的XML文件

生成约束文件

xsd约束文件

3、修改约束文件xsd

软件自动生成了约束文件xsd,但是这个约束文件有问题。主要是它采用扁平化方法,描述各个元素的层级关系。所谓扁平化描述,就是指描述本层和它所包含的下一层的元素。

注意点:

1  data是根目录,它只描述的data的类型,和含有的下一级子元素。具体下一级子元素的详细描述,又采用扁平化方法在下面描述了

2  在描述中,元素的属性数据类型都进行了约束,问题在于后面采用枚举,限定的数据内容,因此需要把枚举的内容删除掉。

3  在元素的描述中,没有限定数据数量,默认就是1个。应该添加不限定。方法是自己写,或者在添加一个元素,然后再生成约束文件,分析文件就可以了。

xsd约束文件

4、XML可视化

XMLSpy软件提供了一种可视化结构展示,非常方便查看自己的XML约束条件。

xml可视化

5、约束文件地址修改

XML文件中引用的约束文件为绝对地址,不适合发布使用。把它修改为相对地址,xml和xsd文件在同一个文件夹中。

xsd地址

6、约束检查

XML约束检查,如果是用XMLSpy软件,如果有问题,会报错,不让保存。根据提示错误,可以修改xsd文件或者XML文件

约束检查结果

四、pycharm软件中生成约束xsd文件

利用pycharm也可以生成XSD文件,但是文件的描述感觉没有XMLSpy软件描述的清晰,如下图,不适用。Pycharm不能进行XML规则检查。

pycharm编辑xml

xml文件

五、Python读写XML文件

常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。

Python 有三种方法解析 XML,就是SAX,DOM,以及 ElementTree。

1.SAX (simple API for XML )

Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

2.DOM(Document Object Model)

将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。

3.ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

代码如下: