0

0

如何解析无效(错误/格式不正确)的 XML?

PHPz

PHPz

发布时间:2024-02-09 23:20:40

|

1789人浏览过

|

来源于stackoverflow

转载

php小编百草为您介绍如何解析无效的xml文件。在处理xml文件时,有时会遇到无效的xml,可能是因为格式不正确或包含错误。解析无效的xml文件是一项重要的任务,以确保我们能够正确地获取所需的数据。为了解决这个问题,我们可以使用php的内置函数和库来检查和修复无效的xml。下面我们将详细介绍几种常用的方法来解析无效的xml文件。

问题内容

目前,我正在开发一项功能,该功能涉及解析我们从其他产品收到的 xml。我决定针对一些实际的客户数据运行一些测试,看起来其他产品允许用户输入应被视为无效的输入。无论如何,我仍然必须尝试找出一种解析它的方法。我们正在使用 javax.xml.parsers.documentbuilder,我在输入时收到如下错误。


  ...
  Example:Description:
  ...

正如您所知,描述中似乎包含无效标签()。现在,这个描述标签被认为是叶标签,并且内部不应该有任何嵌套标签。无论如何,这仍然是一个问题,并在 documentbuilder.parse(...) 上产生异常

我知道这是无效的 xml,但可以预见它是无效的。关于解析此类输入的方法有什么想法吗?

解决方法

“xml”比无效更糟糕——它格式不正确;请参阅格式良好与有效的 xml

对违规行为的可预测性进行非正式评估没有帮助。该文本数据不是 xml。没有一致的 xml 工具或库可以帮助您处理它。

选项,最理想的第一个:

  1. 让提供商自行解决问题。 需要格式良好的 xml。(从技术上讲,格式良好的 xml 一词是多余的,但可能有助于强调。)

  2. 使用宽容标记解析器在解析为 xml 之前解决问题:

  3. 转到:设置romanperekhrest2到 codecs.encodedfile(),如romanperekhrest3所示,作者:romanperekhrest4。

  4. php:请参阅romanperekhrest5 和 romanperekhrest6。请参阅romanperekhrest7的好示例。

  5. ruby:nokogiri 支持“romanperekhrest8”。

  6. r:请参阅romanperekhrest9 用于 r 中的容错标记解析。

  7. perl:请参阅html tidy0 ,一个“超级自由的 xml 解析器,可以解析损坏的 xml。”

  8. 使用文本编辑器手动将数据处理为文本或 以编程方式使用字符/字符串函数。这样做 以编程方式可以从棘手到不可能作为 看起来是什么 可预测的往往不是——打破规则很少受到规则的约束

    • 对于无效字符错误,请使用正则表达式删除/替换无效字符:

    • 对于与号,使用正则表达式将匹配项替换为 xmlreader: 信用:html tidy4,html tidy5 p>

      &(?!(?:#\d+|#x[0-9a-f]+|\w+);)

请注意,上述正则表达式不会接受注释或 cdata

按照设计,标准 xml 解析器永远不会接受无效的 xml。

您唯一的选择是在解析输入之前预处理输入以删除“可预见的无效”内容,或将其包装在 cdata 中。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

752

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

636

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1262

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

706

2023.08.11

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号