问题标签 [tag-soup]

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 投票
1 回答
136 浏览

android - Android 使用了错误的类

我在我的一个项目中使用 TagSoup 并对 HTMLSchema.java 进行了一些修改以处理嵌套列表标签。当我测试这些更改时,它们根本没有效果。我在 Java 独立应用程序中测试了相同的更改,它们按预期工作。

当我尝试调试应用程序时,我注意到它没有在调试器中显示正确的行号,所以我做了你在这种情况下通常会做的事情:重新构建项目,重新启动 IDE,重新启动 Android 设备和PC,创建一个新的Android项目,都无济于事。

我从一些类中删除了所有代码,应用程序仍然像以前一样运行,所以很明显,Android 使用的类与我在应用程序中部署的类不同。我做了一个 Android 测试项目,除了通常的 MainActivity、布局和可绘制对象之外,什么都没有,添加了 TagSoup 类和使用 TagSoup 解析的代码,但它仍然没有使用“我的”TagSoup 类。我用两个 4.4.2 Nexus 设备和一个运行 4.1.2 的 Note 2 对此进行了测试。

只有当我将包名从 org.ccil.cowan.tagsoup 重命名为其他名称(如 org.ccil.cowan.tagsoup2)时,它才使用随我的应用程序部署的类。

我的问题很简单:到底发生了什么?

0 投票
1 回答
2054 浏览

java - 当我需要 DocumentBuilder 时使用 SAX 解析器

XMLBeam是一个不错的 XML 到 POJO 解组器(通过 XPath),但它只允许您配置 DocumentBuilder 或 DocumentBuilderFactory。

TagSoup是一个很好的 SAX 解析器,它可以让您像解析 XML 一样解析讨厌的 HTML 文档。

我想使用 TagSoup 作为 XMLBeam 的 XML 解析器,这样我就可以使用 XPath 将讨厌的 HTML 解组为 POJO。

有没有办法转换或包装 SAX 解析器,以便我可以将它用作 DocumentBuilder 或 DocumentBuilderFactory?

0 投票
1 回答
1467 浏览

jaxb - 如何在 HTML 中使用 JAXB?

我想使用 JAXB 将一些讨厌的 HTML 解组为 Java 对象。(我在 Java 7 上)。

Tagsoup 是一个符合 SAX 的 XML 解析器,可以处理讨厌的 HTML。

如何设置 JAXB 以使用 Tagsoup 来解组 HTML?

我尝试设置 System.setProperty("org.xml.sax.driver", "org.ccil.cowan.tagsoup.Parser");

如果我创建一个 XMLReader,它会使用 Tagsoup,但在我使用 JAXB 时不会。

  1. com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl 是否使用 DOM 或 SAX 来解析 XML?

  2. 如何告诉 JAXB 使用 SAX?

  3. 如何告诉 JAXB 使用 TagSoup 作为 SAX 实现?

根据 Blaise 的建议,在下面尝试,但在最后一行得到 SAXParseException。仅使用 XMLReader 完成解析就可以了:

0 投票
1 回答
214 浏览

java - tagsoup 打破了良好的 xml

清理一个 xml 文件我得到了意想不到的结果:tagsoup 已经孤立了一些属性太快关闭了父标签。它还将父标签的名称小写。

在标签汤之前:

标签汤之后:

我在一个使用这个库的java项目中:

我正在使用 Java 6。

有什么线索吗?
有效 xml 文件的所需输出将是同一个文件(可能只是更改细节,而不是结构),不是吗?

0 投票
0 回答
320 浏览

scala - 在不最小化元素的情况下解析 HTML + 转换

我正在为 Web 应用程序编写一个插件,该插件采用用户提供的 HTML 并将其转换为不同的 HTML 代码。我主要想找到具有给定类/内容(“指令”)的所有元素并将其重写为其他内容。我正在使用 Scala 2.11.1 和 TagSoup 解析器来处理对 XML 不友好的代码。

我目前的主要问题是对XML.parseString("<div></div>")收益的调用:

这种行为会使生成的页面(即iframes、divs 等)出现乱码,因为我希望不最小化此标签。有没有办法在加载阶段避免这种行为?

第二个问题与 TagSoup 有关。解析如下代码块时:

TagSoup 将其解析为

有什么办法可以避免这些问题吗?到目前为止,我只提出了“讨厌”的解决方案,例如重写所有元素以使其最小化并从<script>标签内容中删除所有实体。


TagSoup 解析是这样完成的:

0 投票
1 回答
1707 浏览

java - 带有 TagSoup 和不间断空格值的 Groovy XmlSlurper

我正在使用XmlSlurper由 tagoup 支持的Groovy 解析一些 HTML4 Parser

text()成功地获得了一个节点,但是&nbsp;在尝试测试与另一个值是否相等时,HTML 空间给我带来了一些困难。具体来说,.trim()实际上并不修剪所有空格的字符串。在我看来,值两侧的字符都是空格(见下面的代码),但String.trim()并没有像我期望的那样修剪。从代码示例可以看出,Character.isSpaceChar()对于字符串中的第一个字符被确定为空格字符。

为什么String.trim()不修剪我从中获得的这个值XmlSlurper

产量:

我在用着Groovy Version: 2.3.6 JVM: 1.8.0 Vendor: Oracle Corporation OS: Mac OS X

0 投票
0 回答
306 浏览

maven - 即使添加了 Maven 依赖项,Intellij 也无法解析 tagsoup 命名空间

我在我的一个项目中遇到了 TagSoup 的问题:即使我向 pom 添加了 maven 依赖项,IntelliJ 13 Ultimate 仍然会喊它无法解析命名空间org.ccil.cowan.tagsoup.Parser(指向“ccil”位)。
因此,我创建了一个新的空 Maven 项目,并向其添加了 2 个依赖项:saxon9 和 tagoup1.2。

并创建了简单的类:

结果:

  • saxon 和 tagoup 都被下载到我的本地仓库
  • 它建立在终端 ( mvn clean install)
  • 在 IntelliJ 中,撒克逊人的东西正在得到解决
  • 在 IntelliJ 中,tagsoup 的东西仍然在命名空间的“ccil”部分出现错误“无法解析符号”
  • 由于上述错误,不会在 IntelliJ 中构建

有任何想法吗?我是否缺少对 tagoup 的某种依赖(当然在 tagoup 网站上看不到有关这种依赖的任何内容)?谢谢。

0 投票
1 回答
250 浏览

java - 使用 TagSoup 解析页面的 URL 以创建 DOM 时出现 java IOException

使用以下链接,我正在尝试创建 URL 的 DOM 树(即返回此异常的特定 URL):

但是当我为这个 URL 运行我的程序时,它给了我一个p.parse(new InputSource(url));我不知道为什么的异常。因为到目前为止它没有任何问题。

任何提示?

0 投票
0 回答
693 浏览

clojure - 使用 Enlive/Tagsoup/JSoup 解析 HTML5

HTML5 允许<meta>标签出现在正文中,但 Enlive 似乎不支持这一点:

此测试失败,但如果您删除元标记,它将通过。

这个旧线程让我意识到这是导致问题的元标记。

我意识到 Enlive 依赖于 Tagsoup,但是当我将其切换为 JSoup(声称支持 HTML5)时,我得到了相同的结果。

0 投票
1 回答
1039 浏览

java - 如何使用不支持命名空间的解析器在 Java 中进行 XSL 转换?

我将tagoup用作 (SAX)XMLREader并将命名空间功能设置为false. 此解析器用于提供TransformerSAX 源。完整代码:

这会导致类似:

问题是标签名称是空白的。XMLReader(tagsoup 解析器)在 SAX 方法ContentHandler#startElementContentHandler#endElement. 对于不知道命名空间的解析器,这是允许的(参见Javadoc)。

如果我添加一个XMLFilter将 qName 的值复制到 localName 的值,那么一切正常。但是,这不是我想要的,我希望这可以“开箱即用”。我究竟做错了什么?任何输入将不胜感激!