当我解析本地HTML文件时,jsoup将锚元素中的引号改为
假设我想将下面HTML部分中的值“一”改为“二”:
<div class="pg2-txt1">
<a class="foo" appareantly_a_javascript_statement='{"targetId":"pg1-magn1", "ordinal":1}'>one</a>
</div>
我得到的是:
<div class="pg2-txt1">
<a class="foo" appareantly_a_javascript_statement="{"targetId":"pg1-magn1", "ordinal":1}">two</a>
</div>
锚点元素内的引号是必需的。我的代码现在看起来像这样:
File input = new File("D:/javatest/page02.html");
Document doc = Jsoup.parse(input, "UTF-8");
Element div = doc.select("div.pg2-txt1").first(); //anchor element only identifyable by parent <div> class
div.child(0).text("one"); //actual anchor element
我试过了
doc.outputSettings().prettyPrint(false);
没有成功。
我可以用jsoup实现这一点吗?我必须使用不同的解析器吗?那看起来会是什么样子。
提前非常感谢你。
根据html规范,JSoup表现完全良好:
默认情况下,SGML要求使用双引号(ASCII十进制34)或单引号(ASCII十进制39)分隔所有属性值。当值由双引号分隔时,单引号可以包含在属性值中,反之亦然。作者也可以使用数字字符引用来表示双引号(")和单引号(')。对于双引号,作者还可以使用字符实体引用
注意最后一句话!
基本上,这意味着,在
appareantly_a_javascript_statement
属性中需要双引号的其他软件正在对其值进行一些不完整的解析。
我认为有两种解决方案:
1) 修改解释appareanly_a_javascript_statement值的函数
我不能在那里帮助你,因为我不知道它在哪里完成。
2)通过正则表达式更改Jsoup输出。
这是相当hacky...
String html = doc.outerHtml();
boolean changed = false;
html = html.replaceAll("(=\"\\{)([^\"]+)(\")", "='{$2'");
do{
int oldLength = html.length();
html = html.replaceAll("(=')([^']+)(\\")([^\']+)(')", "$1$2\"$4$5");
changed = html.length() != oldLength;
}while(changed);
System.out.print(html);
问题内容: 在大多数情况下,使用jsoup解析XML都没有问题。但是,如果有XML文档中的标签,jsoup将改变到。这样就无法使用CSS选择器提取标签内的文本。 那么如何防止jsoup“清除” 标签呢? 问题答案: 在jsoup 1.6.2中, 我添加了XML解析器模式,该模式可以按原样解析输入,而无需应用HTML5解析规则(元素内容,文档结构等)。此模式将文本保留在标签中,并允许其倍数等。 这是
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM、CSS 以及类似于 JQuery 的操作方法来取出和操作数据。 本站使用 jsoup 来解析 HTML。 jsoup的主要功能如下: 从一个URL,文件或字符串中解析HTML; 使用DOM或CSS选择器来查找、取出数据; 可操作HTML元素、属性、文
主要内容:1 通过 maven pom.xml 文件,2 通过下载jsoup.jar文件要运行任何 jsoup 程序,您需要安装 jsoup。本教程用的版本是1.8.1。 jsoup 有两种安装方式: 通过 maven pom.xml 通过jsoup.jar 文件。 1 通过 maven pom.xml 文件 目前maven广泛用于java开发。所以我会推荐你使用 maven 来开发 jsoup 应用程序。 要使用 maven 安装 jsoup,请在 pom.xml 文件中添加给
Jsoup 是一个基于 Java 的库,用于处理基于 HTML 的内容。它提供了一个非常方便的 API 来提取和操作数据,使用最好的 DOM、CSS 和类似 jquery 的方法。它实现了 WHATWG HTML5 规范,并将 HTML 解析为与现代浏览器相同的 DOM。 Jsoup 库实现了 WHATWG HTML5 规范,并将 HTML 内容解析为与现代浏览器相同的 DOM。 Jsonp 库提
在少数情况下,我会传递JSON,其中包含用户执行某些操作的页面url。该页面url将有那些查询字符串部分,我需要为用户重定向到相同的页面时,从我的应用程序要求。我的JSON会像 但是当我通过运行这个json时,我看到
我正在尝试使用jSoup刮一个网站,有以下内容。我对jSoup很陌生,还在想办法。我想做的是能够采取的产品名称和价格,并把他们放入一个excel文件的名称在A列和价格在B列,0.00可以忽略或放在C列,无论什么更容易。任何帮助都将是伟大的,因为我知道有人会问,这不是一个家庭作业。 谢谢提前,我真的很感激。 **这是否是表元素,因为这是列表前的“表”代码,如果不是,我应该在html代码中查找什么?