问题标签 [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 投票
4 回答
839 浏览

java - Java XML 解析

转换文档的最快方法是什么:

使带有@的元素成为父元素的属性。

即到达:

使用dom?或 Sax 解析器或手动?我可以将@移动到<>的

0 投票
2 回答
5687 浏览

java - 如何在 Java 中有效地使用 SAXParseException

我正在验证 Java 中的 XMLSchema,并在我有无效的内容模型时抛出 SAXParseExceptions。

我将使用这些异常来突出验证失败的地方 - 但 SAXParseExceptions 似乎有点太低级了。

例如,对于枚举失败,我在一个异常中得到提供的值与内容模型不匹配的有效性错误,以及在下一个异常中应用的元素。

我在想我需要一个实用程序来抽象一点,以将相关错误合并在一起并将异常文本解析为可用的异常属性。

这是一种合理的方法,还是我只是错过了一些东西,或者可能是一个库或帮助类?


更新@timgilbert,感谢您的回复。

例如,我在 t'internet 上发现的 SAXParseException

对我来说关键的事情是

  • 此例外适用的元素“en”。为什么我不能调用 exception.getElement() 或其他东西,为什么不能调用相关元素的 XPath?内存文档比行号和列号更有用!
  • 这是模式验证失败。为什么我不能得到可能的故障类型的枚举和对适当故障的引用?
  • 验证失败的实际模式。
  • 接下来会抛出另一个异常来告诉我导致我需要合并的问题的“en”元素的值

我希望能够做的一个例子是让人们提交一个文档并突出显示验证失败的文档并显示用户友好的消息 - 上面的错误消息似乎不太友好......必须解析用单引号感觉就像一场等待发生的事故:)

我想我可能在'reference-to-element'这件事上做错了,也许我应该在默认情况下对文档进行身份转换作为验证的一部分,并使用我的验证错误属性来增加转换可以用 CSS 挑选出来。如果我需要解析消息以使它们更友好,那仍然无济于事......

回复:紧密绑定,javax.xml.validation.Validator.validate() 无论如何都会抛出 org.xml.sax.SAXException - 不知道我该如何摆脱假设绑定......

干杯

0 投票
3 回答
3621 浏览

java - 关闭 SAX 解析器在解析过程中读取的流的最佳方法是什么?

让我们直接回答我的问题:我有一个套接字,通过这个套接字/流的所有输入都由我的 SAX 解析器解析。现在,对于某个解析事件,我想从我的 SAX 事件处理程序中关闭套接字/流。另外,我想在解析器仍在工作时从外部关闭流。不幸的是,如果没有解析器抛出异常(意外的文档结束......),我无法做一件事或另一件事。好的,我可以捕捉到这个异常,但是您知道如何安全关闭流的解决方案吗?

0 投票
1 回答
780 浏览

.net - .Net 中的 SAX 等效项

.Net 中的 SAX (Java) 是否有任何等价物?我知道 XmlReader,但我正在寻找一个推送解析器。

0 投票
5 回答
3762 浏览

objective-c - 如何从可可 iPhone sax xml 解析例程中提取数据

我正在尝试在 iPhone 应用程序中读取和解析 xml 文档。我开始解析,然后使用覆盖方法:

然后我尝试将属性转换为字符串:

为什么attributes参数前面有两个**。以及为什么在尝试使用上述代码提取数据并将其转换为字符串时会收到警告:

从不兼容的指针类型传递 'initWithCString:encoding:' 的参数 1。

0 投票
2 回答
3619 浏览

xml - 我应该如何从 J2ME 中的流中去除无效的 XML 字符?org.xml.sax.SAXParseException:无效字符

此代码在 Blackberry JDE v4.2.1 上运行。它采用一种方法,可以进行返回 XML 的 Web API 调用。有时,返回的 XML 格式不正确,我需要在解析之前去除所有无效字符。

目前,我得到:org.xml.sax.SAXParseException: Invalid character '' encountered.

我希望看到一种在输入流上附加无效字符剥离器的快速方法的想法,以便流只流经验证器/剥离器并进入解析调用。即我试图避免保存流的内容。

现有代码:

handlerDefaultHandler
url的覆盖是一个包含 API 的字符串URL

0 投票
2 回答
2364 浏览

java - Saxon 8(Java版)问题

我现在要指出,我是使用 saxon 的新手,我已经尝试按照包中的文档和示例进行操作,但我只是没有运气解决这个问题。

基本上,我正在尝试使用 saxon v8 在 java 中进行一些 xml 处理。为了让某些东西正常工作,我采用了包中包含的一个示例文件并根据我的需要进行了修改。只要我不使用名称空间,它就可以工作,这是我的问题。如何解决命名空间问题?我真的不在乎使用它,但它存在于我的 xml 中,所以我要么必须使用它,要么忽略它。任何一种解决方案都很好。

无论如何,这是我的入门代码。它什么也不做,只是进行一个 xpath 查询尝试将它用于硬编码的 xml 文档。

一个示例 XML 文件在这里...

如果我使用包含命名空间的查询运行它,我会收到错误消息。例如: /ns1:animal/cat/给出错误:“Prefix ns1 has not been declared”。

如果我从查询中删除 ns1: ,它什么也没给我。如果我修改 xml 以删除“动物”前面的“ns1:”,我可以/animal/cat/成功运行查询。

任何帮助将不胜感激。谢谢。

0 投票
2 回答
340 浏览

xml - 黑莓中的 TransformerFactory?

如何在 BlackBerry 中使用 TransformerFactory 创建 XML?

Java 有 TransformerFactory 方法。但巴拉克贝瑞没有。

0 投票
5 回答
7538 浏览

python - 在 Python 中设置 sax 解析器的编码

当我将 utf-8 编码的 xml 提供给 ExpatParser 实例时:

...我得到以下信息:

我可能在这里遗漏了一些明显的东西。如何将解析器的编码从“ascii”更改为“utf-8”?

0 投票
1 回答
1512 浏览

.net - MSXML2.SAXXMLReader.6.0 不解析

我正在使用 .net 框架的 XmlTextWriter 从 C# 中写出一些 xml。这工作正常。我写出的一些字符串包含字符值 5(注意我不是指字符 '5',而是指 ascii 值 5)。

现在,我从 xml 规范中了解到这个字符在 xml 中是非法的。但是,我不在乎它是否非法,我希望它在我的 xml(不合格)文档中。这样我就可以将可能包含一些二进制数据的字符串写入文档。

好的,所以 System.Xml.XmlTextWriter 会把这些非法的 xml 字符写好,并在 xml 中将其编码为"&#5x;". 但是,我想通过使用 MSXML2.SAXXMLReader.6.0 在 C++ 应用程序中阅读它们。此解析器在遇到这些字符之一时会引发 fatalError。

我尝试修改解析器的一些属性以使其工作。我的理解是 IE 在内部使用了这个解析器,我可以用 IE 加载非法的 xml ok。那么,当我不能解析它时,IE 是如何解析它的。

我错过了什么吗?IE 是否使用不同的解析器。有没有办法让 MSXML2.SAXXMLReader.6.0 解析器工作?我是否需要使用不同的解析器(如果需要,您能否推荐一个具有可用源代码的解析器,以便如果它不符合我的要求,我可以修复它)?

我可以在 .Net 解析器上设置一个属性,以允许解析这些非法字符。我想我正在寻找一个可以在 C++ 中与 SAX 解析器一起使用的等价物。 http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.checkcharacters.aspx

非常感谢,
-斯科特

注意我不相信 CDATA 部分会允许对这个字符进行编码。请参阅此处: http: //msdn.microsoft.com/en-us/library/ms256076
(VS.85).aspx ,即使它确实如此。我不想使用 CDATA 部分,我想在属性值中使用字符。我也意识到我可以对它进行base64编码,但我也不想这样做......我想违法,我希望能够解析非法的xml。