问题标签 [sax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6626 浏览

java - 告诉 SAX Parser 忽略无效字符?

SAX 在以下异常中不断死亡:

问题在于它大部分是正确的 UTF-8 编码,但其中有一些错误。我们无法获得该文件的新版本,我们必须使用该文件。

那么我们如何告诉 SAX 忽略无效的字符序列,或者清理 UTF-8 文件以使其没有无效的 UTF-8 序列?

0 投票
1 回答
569 浏览

xml - 找到第一个元素时如何停止解析?

我想在找到第一个元素时停止解析,即使在那之后还有更多相同的元素。我在 ruby​​ 上使用 libxml、SAX。
此代码显示每个<usr>元素。
但是我想在 find 1st 时停止解析<usr>
因为这个 XML 文件会很大。有谁知道通过 SAX 方法找到第一个元素时如何停止解析。

代码

谢谢。

0 投票
1 回答
2973 浏览

java - 使用默认 sax 解析器时,jaxb unmarshal 可被精心制作的 xml 滥用?

因此,在我当前的项目中,我使用 JAXB RI 和 Sun 的 JRE(我相信是 Xerces)中的默认 Java 解析器来解组任意 XML。

首先我使用 XJC 编译一个如下形式的 XSD:

在“好案例”中,一切都按设计进行。也就是说,如果我传递了符合此模式的 XML,那么 JAXB 会正确地将其解组为对象树。

当我通过外部 DTD 引用传递 XML 时,问题就出现了,例如

在解组这样的事情时,SAX 解析器尝试加载远程实体(“ http://somehost/foobar.dtd ”),尽管这个片段显然不符合我之前用 XJC 编译的模式。

为了规避这种行为,因为我知道任何符合标准的 XML(根据我编译的 XSD)都不需要加载远程实体,所以我必须定义一个自定义 EntityResolver 来缩短所有远程实体的加载。所以不要做类似的事情:

我被迫这样做:

所以我的最终问题是:

当使用 JAXB 解组时,如果在没有加载这些远程实体的情况下可以将相关 XML 识别为无效时,底层 SAX 解析器加载远程实体是否应该自动短路?

另外,这似乎不是一个安全问题吗?鉴于 JAX-WS 在底层依赖 JAXB,似乎我可以将特制的 XML 传递给任何基于 JAX-WS 的 Web 服务,并导致 WS 主机加载任意 URL。

我是一个相对新手,所以我可能缺少一些东西。如果是这样,请告诉我!

0 投票
2 回答
2076 浏览

xml - Perl XML:SAX 解析错误 -> 属性值未打印

我正在尝试使用XML::SAX parser在 Perl 中解析 XML 。我的查询是关于生成属性值。现在我只能生成标签元素中存在的值,但我的目标是生成:

这是我的books1.xsd

这是我的样本Books.xml

这是我的parser.pl文件:

这是我的MyHandler.pm模块:

0 投票
2 回答
3505 浏览

xml - 如何使用 Perl 解析 XML 数据并将其插入 MySQL 数据库?

这是我想要完成的事情:

在更广泛的意义上,使用 SAX 解析器解析 XML 数据并将其插入 MySQL 表中的适当数据库列。

这是样本Books.xml

使用 SAX 解析器的 Perl 脚本:

SAX 解析器处理模块MySaxHandler.pm

脚步:

  1. 使用 XML::SAX 解析器解析 XML
  2. 对于 XML 中的每个节点,如果它有子节点,则遍历它,一旦我到达叶节点,然后动态生成插入语句,以将该节点值插入数据库表的列;例如,如果我有 XML 叶节点,price并且它的父节点是,那么 Perl 脚本应该在数据库表的列中offer插入price节点的值。priceoffer
  3. 我有一个很大的 XML 文件,它有很多节点,每个节点又有很多子节点和大子节点。

问题:

  1. 在使用 SAX Parser 解析 XML 时,如何将 books.xml 中的元素标记值插入到适当的 MySQL 数据库列for. E.g. price value should go into offer table's price column中?

    OR

  2. 如何生成所有插入,一旦我拥有所有插入语句,然后连接到 MySQL 数据库并转储它们?

棘手的部分:

棘手的部分是有些数据具有相互依赖性。例如priceoffer父节点中的节点也与default price节点相关,因此在生成插入语句时,我们必须记住值已正确插入到数据库中,但我们不允许使用 MySQL 的 InnoDB 表,但我们被允许使用的唯一引擎使用的是MyISAM

Perl 中有哪些可能的建议来解决这些问题?

0 投票
2 回答
1218 浏览

xml - 在使用 SAX 解析 XML 文件时,如何创建等效于元素值的模块对象?

我现在在 sax 中有不同的模块,如 Author.pm、BillingPeriod.pm、Offer.pm、PaymentMethod.pm 等,每当我点击结束元素标签时,我想创建模块的对象,它相当于元素值。

我怎样才能做到这一点?

例如,如果我通过 XML 文件和 sax 解析器命中的结束元素进行解析,那么它应该创建 Offer.pm 的对象,类似地,如果 sax 解析器命中的结束元素标记那么它应该创建 Author.pm 的对象

代码

XML:books.xml

萨克斯:perlsaxparsing.pl

例如在下面的示例中,假设 sax 正在击中Offer end element tag,所以正在创建对象Offer.pm

我想创建模块对象,例如,Offer.pm在这种情况下,当 sax 命中 Offer 元素标记的结束元素时。

SAX 解析器处理程序模块:MySaxHander.pm

问题:使用 SAX 解析 XML 文件时,如何创建与元素值等效的模块对象?

0 投票
2 回答
861 浏览

java - 使用 XSD 验证 XML 文件时出错

我有一个 xml 文件,我们称之为 test.xml,我有一个用于验证的架构 (schema.xsd)。我也在使用最新版本的 TomCat。
我想知道什么可能导致以下错误:

错误:URI=file:///C:/../Upload/test.xml Line=2:文档无效:找不到语法。
错误:URI=file:///C:/../Upload/test.xml Line=2:文档根元素“TEST_ROOT”,必须匹配 DOCTYPE 根“null”。

真诚的

0 投票
3 回答
6612 浏览

xml - 我应该如何在 Perl 中解析大型 XML 文件?

像下面的代码那样读取 XML 数据是否会在内存中创建 DOM 树?

对于大型 XML 文件,我应该使用SAX解析器、处理程序等吗?

0 投票
1 回答
26394 浏览

xml - 使用 SAX 解析 XML 字符串

有没有办法使用 Android SAX 解析 XML 字符串?

0 投票
13 回答
30134 浏览

java - SAX 模型是否有任何 XPath 处理器?

我正在寻找一个不会重建整个 DOM 文档以查找文档节点的 XPath 评估器:实际上,该对象是使用 SAX 模型管理大量 XML 数据(理想情况下超过 2Gb),这非常有利于内存管理,并提供搜索节点的可能性。

谢谢大家的支持!

对于所有说不可能的人:我最近在问了这个问题后,找到了一个名为“saxpath”的项目(http://www.saxpath.org/),但我找不到任何实施项目。