栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java

“ XML”比无效更糟糕–它的格式不正确;请参阅格式正确与有效XML。

对违法行为的可预测性进行非正式评估无济于事。该文本数据不是XML。没有一致的XML工具或库可以帮助你处理它。

选项,最可取的是:

  1. 让提供者最终解决问题。 要求格式正确的XML。(从技术上讲,格式良好的XML短语是多余的,但可能有助于强调。)
  2. 使用容忍标记解析器在解析为XML之前清除问题:

  3. Standalone: xmlstarlet具有强大的恢复和修复功能信誉:RomanPerekhrest

xmlstarlet fo -o -R -H -D bad.xml 2>/dev/null
  • **Standalone andC / C **: HTML Tidy也可以与XML一起使用。 Taggle是TagSoup到C 的移植。

  • Python

    Beautiful Soup
    是基于
    Python
    的。请参阅解析器之间的差异部分中的注释。另请参阅此问题的答案,以获取更多有关处理
    Python
    中格式错误的标记的建议。另请参阅此答案以了解如何
    precs.EnpredFile()
    用于清除非法字符。

  • Java
    TagSoup
    JSoup
    专注于
    HTML
    FilterInputStream
    可用于预处理清理。
    。净:
  • 可以禁用
    XmlReaderSettings.CheckCharacters
    来解决过去的非法XML字符问题。
  • @jdweng票据是XmlReaderSettings.ConformanceLevel可以被设置为 ConformanceLevel.Fragment使XmlReader可以读取XML格式良好的解析实体缺少根元素。
  • @jdweng还报告说XmlReader.ReadToFollowing()
    ,有时可以用来工作,围绕XML语法的问题,但在#3下文附注违规警告。
  • Microsoft.Language.Xml.XMLParser
    据说是“容错的”。
  • PHP:请参阅
    DOMdocument :: $ recover
    libxml_use_internal_errors(true)
    。在这里看到很好的例子。
  • Ruby
    Nokogiri
    支持
    “ Gentle Well-Formedness ”
  • R:请参见
    htmlTreeParse()
    以了解R中的容错标记解析。
  • Perl:请参阅XML ::

    Liberal
    ,这是“超级自由的XML解析器,用于解析损坏的XML”。

  • 使用文本编辑器手动将数据处理为文本,或使用字符/字符串功能以编程方式处理数据。以编程方式执行此操作的范围可能从棘手到不可能,因为似乎经常可以预测的事情并非如此- 打破规则很少受规则约束。

对于无效字符错误,请使用regex删除/替换无效字符:

  • PHP
    preg_replace('/[^x{0009}x{000a}x{000d}x{0020}-x{D7FF}x{E000}-x{FFFD}]+/u', ' ', $s);
  • Ruby
    string.tr("^u{0009}u{000a}u{000d}u{0020}-u{D7FF}u{E000‌​}-u{FFFD}", ' ')
  • Javascript
    inputStr.replace(/[^x09x0Ax0Dx20-xFFx85xA0-uD7FFuE000-uFDCFuFDE0-uFFFD]/gm, '')

  • 对于

    符,请使用正则表达式将匹配项替换为&:credit:blhsin,demo

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

请注意,上面的正则表达式不会考虑注释或CDATA部分。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号