2026/3/13 10:00:58
网站建设
项目流程
网站后台要怎么做,网络服务提供者接到权利人通知后,菜单宣传网站怎么做的,怎样创建网站快捷方式一、XML 基础认知XML#xff08;可扩展标记语言#xff09;是用于存储 / 传输结构化数据的格式#xff0c;核心特点是标签可自定义#xff0c;结构层级清晰。示例结构#xff1a;xmllibrary !-- 根节点 --book id1001 !-- 子节…一、XML 基础认知XML可扩展标记语言是用于存储 / 传输结构化数据的格式核心特点是标签可自定义结构层级清晰。示例结构xmllibrary !-- 根节点 -- book id1001 !-- 子节点带属性 -- titlePython编程/title !-- 叶子节点带文本 -- price89.0/price /book /libraryPython 中处理 XML 的主流工具是内置的xml.etree.ElementTree简称 ET它轻量、高效满足绝大多数 XML 处理场景。二、核心操作实战1. 解析 XML读取与查询解析是处理 XML 的第一步支持从文件 / 字符串解析重点是精准提取节点数据。准备示例文件book.xmlxmllibrary book id1001 titlePython编程从入门到实践/title author埃里克·马瑟斯/author price89.0/price category编程/category /book book id1002 titleXML基础教程/title author李四/author price59.0/price category数据格式/category /book /library解析代码示例python运行import xml.etree.ElementTree as ET # 1. 从文件解析XML最常用 tree ET.parse(book.xml) root tree.getroot() # 获取根节点library # 2. 从字符串解析XML适合动态生成的XML xml_str library book id1003titleJava编程/titleprice79.0/price/book /library root_from_str ET.fromstring(xml_str) # 3. 基础遍历遍历所有book节点 print( 基础遍历 ) for book in root: book_id book.get(id) # 获取节点属性 title book.find(title).text # 查找第一个子节点并取文本 price book.find(price).text print(fID: {book_id}, 标题: {title}, 价格: {price}) # 4. 进阶查询XPath语法精准定位 print(\n XPath进阶查询 ) # 查所有价格60的book high_price_books root.findall(.//book[price60]) for book in high_price_books: print(f高价书{book.find(title).text}) # 查id1002的book的category category root.find(.//book[id1002]/category).text print(fID1002的分类{category})关键解析ET.parse()从文件加载 XML返回 Tree 对象ET.fromstring()从字符串加载直接返回根节点。get(属性名)获取节点的属性值如id。find(节点名)查找第一个匹配的子节点findall()查找所有匹配节点。XPath进阶核心.//book表示递归查找所有 book 节点[id1002]筛选属性price60筛选文本值。2. 修改 XML修改 / 添加 / 删除节点解析后常需要修改内容比如更新值、新增节点、删除无用节点。python运行import xml.etree.ElementTree as ET # 解析文件 tree ET.parse(book.xml) root tree.getroot() # 1. 修改节点内容/属性 book_1001 root.find(.//book[id1001]) price_node book_1001.find(price) price_node.text 85.0 # 修改文本 price_node.set(currency, CNY) # 添加/修改属性 # 2. 添加新节点 book_1002 root.find(.//book[id1002]) publish_date ET.Element(publish_date) # 创建新节点 publish_date.text 2024-01-01 book_1002.append(publish_date) # 追加到子节点末尾 # 3. 删除节点 category_node book_1002.find(category) book_1002.remove(category_node) # 4. 保存修改后的XML指定编码避免中文乱码 tree.write( modified_book.xml, encodingutf-8, xml_declarationTrue # 生成XML声明头?xml version1.0? ) print(XML修改完成已保存为modified_book.xml)关键修改set(属性名, 值)给节点添加 / 更新属性如给 price 加货币单位。ET.Element(节点名)创建新节点append()/insert(索引, 节点)添加到父节点。remove(节点)删除指定子节点。tree.write()保存时务必指定encodingutf-8否则中文会乱码。3. 生成 XML从零创建有时需要完全手动构建 XML而非修改现有文件。python运行import xml.etree.ElementTree as ET # 1. 创建根节点 root ET.Element(students) # 2. 创建子节点推荐用SubElement简化操作 # 第一个学生节点带属性 student1 ET.SubElement(root, student) student1.set(id, S001) ET.SubElement(student1, name).text 小明 ET.SubElement(student1, age).text 18 ET.SubElement(student1, major).text 计算机科学 # 第二个学生节点直接指定属性 student2 ET.SubElement(root, student, idS002) ET.SubElement(student2, name).text 小红 ET.SubElement(student2, age).text 19 ET.SubElement(student2, major).text 软件工程 # 3. 生成Tree并保存 tree ET.ElementTree(root) tree.write( students.xml, encodingutf-8, xml_declarationTrue, short_empty_elementsFalse # 空节点用node/node而非node/ ) print(XML生成完成已保存为students.xml)生成的students.xml最终效果xml?xml version1.0 encodingutf-8? students student idS001 name小明/name age18/age major计算机科学/major /student student idS002 name小红/name age19/age major软件工程/major /student /students4. 进阶处理 XML 命名空间XML 命名空间xmlns用于避免标签名冲突如ns:book处理时需指定命名空间映射。python运行import xml.etree.ElementTree as ET # 带命名空间的XML字符串 xml_with_ns library xmlns:bkhttp://example.com/books bk:book id1001 bk:titlePython编程/bk:title /bk:book /library root ET.fromstring(xml_with_ns) # 定义命名空间映射前缀→URI ns {bk: http://example.com/books} # 必须指定namespaces参数才能查询 title root.find(.//bk:title, namespacesns).text print(f带命名空间的标题{title}) # 输出Python编程三、总结Python 处理 XML 的核心工具是内置的xml.etree.ElementTree无需额外安装支持解析、修改、生成全流程。解析 XML 的核心技巧基础用find()/findall()进阶用 XPath修改 XML 后保存时需指定encodingutf-8避免中文乱码。处理带命名空间的 XML 时必须通过namespaces参数映射前缀与 URI否则无法正确定位节点。