如何覆盖 DOMParser 上的 node/xmldom errorHandler?

2024-06-28

I use https://github.com/jindw/xmldom https://github.com/jindw/xmldom并想要检查 XML 文件的解析错误。 文档中写道,有必要在 DOMParser 的构造函数上覆盖 locator + errorHandler 。

但我找不到任何代码示例,如何在节点上下文中使用它们。

文档说:

//errorHandler is supported
new DOMParser({
   /**
    * locator is always need for error position info
    */
   locator:{},

   /**
    * you can override the errorHandler for xml parser
    * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
    */
   errorHandler:{warning:function(w){console.warn(w)},error:callback,fatalError:callback}

   //only callback model
   //errorHandler:function(level,msg){console.log(level,msg)}
})

这是可运行的代码:

var DOMParser = require('xmldom').DOMParser;

let mylocator = {};

let parseLog = {errorLevel: 0};

let parser = new DOMParser({
                locator: mylocator,
                errorHandler: {
                   warning: (msg) => {manageXmlParseError(msg,1,parseLog)},
                   error: (msg) => {manageXmlParseError(msg,2,parseLog)},
                   fatalError: (msg) => {manageXmlParseError(msg,3,parseLog)},
                },
});

function manageXmlParseError(msg,errorLevel,errorLog){
   if( (errorLog.errorLevel == null) || (errorLog.errorLevel < errorLevel)){
      errorLog.errorLevel = errorLevel;
   }

   if(errorLog[errorLevel.toString()] == null){
      errorLog[errorLevel.toString()] = [];
   }

   errorLog[errorLevel.toString()].push(msg);
}

var doc = parser.parseFromString(
'<xml xmlns="a" xmlns:c="./lite">\n'+
    '\t<child>test</child>\n'+
    '\t<child22><<</child>\n'+
    '\t<child/>\n'+
'</xml>'
,'text/xml');

console.info("parsestatus ==> " + parseLog.errorLevel + "\nlocator:" +  mylocator.columnNumber + "/" + mylocator.lineNumber );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 DOMParser 上的 node/xmldom errorHandler? 的相关文章

随机推荐

  • 跟踪代码的来源 (PHP)

    我正在浏览客户的服务器 运行疯狂的专有论坛 软件 vBulletin 甚至更糟糕的 SEO 模组 vbseo 我想不通 找出页面的 php 代码来自哪里 如何追踪这个 返回 PHP 页面的 URL http www example com
  • 64位Java无法通过ODBC访问32位MS Access数据库

    我有一台新的 64 位笔记本电脑 并安装了 STS 64 位和 Java 64 位 我正在尝试创建到 32 位 Microsoft 数据库的 ODBC 连接 但是默认的管理工具不提供访问驱动程序 经过谷歌搜索后 我发现 C Windows
  • 正则表达式“只分组,不捕获”似乎不起作用

    x abcdefg x x match ab cd ef x 不应该是 abef 吗 不是 它实际上是 abcdef 为什么我的 没有任何效果 当然我的理解很可能是错误的 still matches 它只是不会出于以下目的创建新组 1 1
  • JQGrid 列自动宽度

    我只是想知道如何将 jqGrid 列宽度设置为自动 colModel name MyDescription index description align left width 150 sortable false 对于上面的语句 我如何指
  • 如何对 Sharepoint 工作流程进行故障排除?

    我在这里有点迷失 找不到太多文档 NET 工作流程还是使用 SharePoint 设计器创建的工作流程 我只获得了后者的经验 而且它们并不容易调试 您实际上只需要一次执行一步并测试每一步 当您转到 列表设置 时 您也可以在 SharePoi
  • mysql字符串转换返回0

    why select aaa 0返回 1 真 如果我有一张像这样的桌子 userid pass user1 pas1 如果我查询 select from table where userid 0 and pass 0 它给了我所有的行 My
  • Scala变量作用域问题

    我有一个 scala 语法问题 假设我有一个简单的依赖模式构造 如下所示 trait Master val foobar object SubObject extends SubObject foobar foobar trait SubO
  • MySQL 设置自动增量“Ad Hoc”

    有没有办法以 临时 方式将 mysql 的 auto increment 设置为某个整数 例如 表中已删除 N 个最新行 因此主键 auto increment 与实际行数相差 N 有没有办法将 auto increment 设置为正确的数
  • 对于 ActiveReord 中的 has_many 关联,counter_cache 不会递减

    我的 Rails 3 应用程序有 2 个模型 第三个模型是它们之间的联接表及其 has many 关系 基本上 User 和 Show 通过 SavedShow 连接起来 允许用户保存节目列表 class Show lt ActiveRec
  • Java Builder 模式和“深”对象层次结构

    在 深层 对象层次结构中使用生成器模式的最佳实践是什么 为了详细说明 我探索了将 Joshua Bloch 提出的 Builder 模式应用到我的 XML 绑定代码的想法 我使用的是 SimpleXML 但这个问题适用于任何情况 我的对象层
  • 对于多个人脸,CIFaceFeature TrackingID 始终相同

    我想在我的项目中检测多张面孔 因此我打算使用 CIFaceFure 的trackingID属性来跟踪面部 但我发现每次每张脸的情况都是一样的 所以我的问题是 当视频帧中存在多张脸时 如何唯一地识别一张脸 我不想识别脸部以供以后仅检测当前视频
  • 如何在 iOS 8 中强制视图控制器方向?

    在 iOS 8 之前 我们结合使用以下代码支持的接口方向 and 应该自动旋转委托方法强制应用程序定向到任何特定方向 我使用下面的代码片段以编程方式将应用程序旋转到所需的方向 首先 我正在更改状态栏方向 然后 只需呈现并立即关闭模态视图即可
  • 为什么 Python 中没有显式的空性检查(例如 `is Empty`)

    Python 之禅 https www python org dev peps pep 0020 说 显式优于隐式 然而 检查是否为空的 Pythonic 方法是使用隐式布尔值 if not some sequence some seque
  • 我可以将 GitHub 中的源文件嵌入到 Gists 之外的网页上吗?

    Context 您可以创建一个Gist https gist github com 在 GitHub 上并将其嵌入到您的网页中 嵌入要点 https help github com articles about gists embeddin
  • 为什么带有子进程的 Python 线程无法按预期工作?

    我有以下微妙的问题 Python 代码启动两个线程 每个线程创建一个对可执行文件 实际上是用 C 编写的 的子进程调用 第一个可执行文件传递参数 10000 这意味着在退出之前延迟 10 秒 第二个可执行文件类似 但延迟了 20 秒 我观察
  • CryptAcquireContext——未解析的外部

    我正在链接第三方库 Poco C 并从链接器获取以下未解决的符号错误 它似乎无法找到 CryptAcquireContextW CryptReleaseContext 和 CryptGenRandom 根据微软信息在这里 http msdn
  • BoxDecoration 小部件缺少 padding 属性

    The BoxDecoration 类文档 https api flutter dev flutter painting BoxDecoration class html表明这个小部件有一个padding财产 然而 当我将它与此属性一起使用
  • 更改复选框值而不引发事件

    我想更改复选框值而不引发 onCheck 事件 我知道有一些解决方法 例如取消注册 更改值然后重新注册 在事件方法内部基于标志跳过或评估方法语句 或任何其他解决方法 我正在寻找一种更清洁的方法 我知道这是一个旧线程 但给出的答案太麻烦了 我
  • Heroku postgresql 数据库名称

    这是我必须查找 heroku 数据库名称的命令 heroku config grep POSTGRESQL 我得到类似于以下的结果 HEROKU POSTGRESQL NAVY URL postgres wxjwilh t email pr
  • 如何覆盖 DOMParser 上的 node/xmldom errorHandler?

    I use https github com jindw xmldom https github com jindw xmldom并想要检查 XML 文件的解析错误 文档中写道 有必要在 DOMParser 的构造函数上覆盖 locator