资讯专栏INFORMATION COLUMN

XML Notebook

darkbug / 1433人阅读

摘要:不使用外部声明属性单双引号皆可大小写敏感大小写不敏感必须有根元素实体引用实体任何包含数据的项实体中要使用转义字符无论写什么,都当作普通文本逐行扫描,边扫描边解析,速度快不能对节点进行修改构造,方便遍历和修改对于大文件,内存压力大获取子

XML: EXtensible Markup Language
1. Basic Syntax 1.1 Processing instruction
 format

e.g.

Must have:

version

Optional:

standalone: yes/no : 不使用外部声明

encoding: utf-8/gbk ...

1.2 element & attribute

element: ...

属性:单双引号皆可

1.3 大小写敏感

HTML:大小写不敏感

1.4 必须有根元素 1.5 实体引用
实体:任何包含数据的项

实体中要使用转义字符:

< <
> >
& &
' "
" "
1.6 CDATA block
format: 
无论text写什么,都当作普通文本
2. Parsers 2.1 SAX & DOM

SAX: simple API for XML

Pros: 逐行扫描,边扫描边解析,速度快

Cons: 不能对节点进行修改

DOM: Document Object Model

pros: 构造Tree,方便遍历和修改

cons: 对于大文件,内存压力大

DOM4J:

DOM4J is an open source, Java-based library to parse XML documents.
DOM4J works with DOM, SAX, XPath, and XSLT. It can parse large XML documents with very low memory footprint.
3. DOM4J 3.1 SAXReader:
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new File(filename));
3.2 Document
    Element root = doc.getRootElement();
3.3 Element

Element element(String name); // 获取name子元素

List elements();

String getName();

String getText();

Attribute attribute(int index / String name);

3.4 Attribute

String getName();

String getValue();

3.5 Write 3.5.1 Create Document
            Document DocumentHelper.createDocument();
            Document的addElement():只能调用一次
                Element root = doc.addElement("project");
3.5.2 Element

addElement(String name);

addAttribute(String name, String val);

addText(String txt);

3.5.3 Output
            XMLWriter writer = new XMLWriter();
            FileOutputStream fos = new FileOutputStream("new.xml");
            writer.setOutputStream(fos);
            writer.write(doc);
            writer.close();
3.6 XPath

absolute path: starts with /

relative path: step/step

. current node
.. the parent of current node
/ Selection starts from the root node
// 任意位置的某个节点
@ 选择属性

Predicates:

[predicates]
/books/book[1] 选择第一个book子元素
/books/book[last()] 选择最后一个book子元素
/books/book[@lang] 选择有lang属性的子元素
/books/book[@lang="eng"] 选择有lang属性为eng的子元素
/books/book[price] 选择有price子元素的book
/books/book/price[.>35.00] 选择大于35的/books/book/的price子元素

通配符:

* 任何元素
@* 任何属性
node() 任何类型的节点
//* 所有元素
/*/* 所有第二层元素

DOM4J对XPath的支持:

List list = doc.selectNodes("...");

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110385.html

相关文章

  • 装扮你的Jupyter

    摘要:显示中文此外,单独拎出来的另一个原因是,还有一个中文显示的问题。首先我们来看可以使用的字体你应该看到下面这样的表格然后找到支持中文的字体名,然后设置的默认字体当然,你可以添加到刚才的配置中,或者采用这个博客的方法。 又到摆脱重复工作,换个心情,然而并没有软用的时间了。这次,教大家如何搭建一个好看的jupyter环境。 安装Jupyter 先来展示一下我的环境 python: 3.5....

    leo108 评论0 收藏0
  • 用进度条助您特征工程一臂之力

    摘要:在此探讨的是级别以下的数据之上的分析,有基于的分布式任务精度条,主要环境是下基于包的分析和特征工程任务。当然,首先我们得载入模块,在中使用带的基于显示的进度条前,请务必检查是否安装模块。 在具体的分析或者特征工程之中,经常会遇到处理时间很久的问题,当然必要的优化是必须的。但是显然,数据量上升,计算量过大后,处理时间是必须的此。时,如果有个可以帮助您查看任务进度的进度条,必定可以提高你抓...

    darry 评论0 收藏0
  • 连接远程jupyter notebook ----windows环境

    摘要:连接远程环境作为一个小巧的,使用方便的编辑器,受到许多初学者的喜爱考虑到本地配置的限制,往往想要调用远程服务器中的,下文记录下查阅网上资料尝试的步骤远程服务器中安装本文使用的远程服务器是,系首先,你的服务器中需要安装,,此处不赘述由 连接远程jupyter notebook ----windows环境 jupyter notebook作为一个小巧的,使用方便的python编辑器,受到许...

    pepperwang 评论0 收藏0
  • tkinter中ttk.Notebook实现多页面切换

    摘要:使用可实现实现多页面切换直接上代码华文行楷请点击微软雅黑请点击微软雅黑人生苦短,我用使我更加强大设置左上角小图标设置窗口不可变 使用ttk.Notebook可实现实现多页面切换 直接上代码: import tkinter as tkfrom tkinter import ttkfrom ...

    不知名网友 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<