- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试解析 HTML 表的内容并将其写入 CSV。我正在尝试 StaX 解析器html 包含转义字符,例如 &nbps'
和 &
我正在使用 org.apache.commons.lang3.StringEscapeUtils
逐行转义 html 并写入新文件。
StAX 仍然无法解析未转义的字符。
请帮助我修复或处理此异常。
我用下面的 xml 片段进行测试 - ojit_代码
我调用下面的代码来转义 html -
StringEscapeUtils.unescapeHtml4(escapedHtml)
并将其写入文件。
然后我尝试使用 Stax Parser 解析该文件 -
public void unescapeHtmlFile(String filePath) throws IOException{
BufferedReader fileReader = null;
BufferedWriter fileWriter = null;
try{
fileReader = new BufferedReader(new FileReader(filePath));
fileWriter = new BufferedWriter(new FileWriter("./out/UnescapedHtml.html"));
String line = null;
String unescapedLine = null;
while((line=fileReader.readLine())!=null){
System.out.println("Before: " + line);
unescapedLine = StringEscapeUtils.unescapeHtml4(line);
System.out.println("After: " + unescapedLine);
fileWriter.newLine();
fileWriter.write(unescapedLine);
}
}finally{
fileReader.close();
fileWriter.close();
}
}
输出如下 -
Document started
<?xml version="null" encoding='UTF-8' standalone='no'?>
Element started
<root>
Element started
<element0>
Characters
0123456 7890 ABC DEF
Element ended
</element0>
Element started
<element1>
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,66]
Message: Invalid byte 1 of 1-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:596)
at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
at parser.StreamParserTest.main(StreamParserTest.java:30)
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,66]
Message: XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:598)
at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:83)
at parser.StreamParserTest.main(StreamParserTest.java:30)
无法解析 <root><element>A B </element></root>
的未转义值请帮忙。
最佳答案
类 FileReader 和 FileWriter 是旧的实用程序类,不幸的是它们使用当前的平台编码。在 Windows 上几乎肯定不是 UTF-8。 XML 通常采用 UTF-8 格式(它确实可以表示所有字符。
fileReader = new BufferedReader(new FileReader(filePath));
fileWriter = new BufferedWriter(new FileWriter("./out/UnescapedHtml.html"));
应该是
fileReader = new BufferedReader(new InputStreamReader(
new FileInputStream(filePath), StandardCharsets.UTF_8));
fileWriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("./out/UnescapedHtml.html"),
StandardCharsets.UTF_8));
说实话,人们应该阅读 <?xml ...?>
看看它是否有 encoding
字符集属性,默认为UTF-8。这可以通过 StandardCharsets.ISO_8859_1
来完成,因为 UTF-8 会遇到错误的多字节序列。
使用 StandardCharsets 代替字符串“UTF-8”可以消除
保证支持 StandardCharsets。
关于java - 无法使用 StAX 解析由 Apache Commons StringEscapeUtils.unescapeHtml 生成的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21552315/
在哪里可以找到这个类StringEscapeUtils,它可以自动转义字符而不是手动执行...在我的搜索中,我找到了名为StringEscapeUtils的util,但我找不到在我的项目中找到,或者我
我一直在使用 StringEscapeUtils.escapeHTML 来转义 URL。是否有类似的东西可以查明字符串是否已经转义? 最佳答案 原则上这是不可能的,因为每个转义字符串同时都是非转义字符
我有以下字符串: String str = "{% assign foo = values %}.{{ foo[0] }}." 我正在尝试将其编译为模式: Pattern p = Pattern.co
org.apache.commons.lang.StringEscapeUtils.escapeHtml 和 org.apache.commons.lang3.StringEscapeUtils.es
我正在尝试读取包含 unicode 字符的文件,将这些字符转换为其相应的符号,然后将生成的文本打印到新文件中。我正在尝试使用 StringEscapeUtils.unescapeHtml 来执行此操作
我正在尝试对字符串进行转义以确保转义特殊字符。 使用 StringEscapeUtils.escapeJava("😀") escapes to \\uD83D\\uDE00 StringEscap
我尝试使用 Apache Commons 库(v. 1.7)中的 StringEscapeUtils 来转义和取消转义大文本,该库将从数据库(在本例中为 H2 数据库)存储和检索。除了换行符之外,几乎
我有一个这样的字符串 String incoming = " Ευχαριστώ (eff-kha-ri-STOE) Tι κανείς (tee-KAH-nis)? Mε συγχωρείτε
对于一个非常简单的 ajax 名称查找,我从客户端网页发送一个 id 到服务器(Tomcat 5.5,Java 5),在数据库中查找它并返回一个字符串,该字符串被分配给一个 javascript 变量
如何在前端使用 StringEscapeUtils 取消转义字符串转义。 谢谢 PS: 我用的是EXT-js3.4 & Jsp. 最佳答案 您是否必须使用 StringEscapeUtils(顺便说一
刚开始使用 Apache Commons StringEscapeUtils . 根据 http://www.w3schools.com/tags/ref_entities.asp , Ö 应该对应于
我想转义 $ 符号以及“”等其他字符。所以只是想知道 StringEscapeUtils 是否支持此功能。如果没有,我怎样才能逃脱它? 最佳答案 看起来没有。您可以使用以下代码尝试一下: String
有一个字符串:Character\5C&\22\3C\3E'我想逃脱。 有一个代码: package escaping; import org.apache.commons.lang.StringEs
以下代码: final String INVALID_ESCAPE="\\"; System.out.println(String.format("'%s' -> '%s'", INVALID_ESC
**jsp code** java类中相同 public static void main(String[] args) { String str="तुम
escapeXml 函数正在将 ѭ Ѯ 转换为 ѭ Ѯ 我猜它不应该。我读到的是它仅支持五个基本的 XML 实体(gt、lt、quot、amp、 apos). 有没有只转换这五
我正在尝试使用 org.apache.commons.lang 中的 StringEscapeUtils.escapeXML() 函数... 该函数有两个版本,一个期望 (Writer, String
我需要在 XML 中留出一些控制字符,例如 ASCII 31 字符和十六进制 0x0b 字符等。 我尝试使用 commons-lang 的 StringEscapeUtils,但没有按预期工作! 最佳
我已经开始将 commons.lang 2 迁移到 commons.lang3。 根据 https://commons.apache.org/proper/commons-lang/article3_
当我使用 Gson ( JsonParser.parse) 解码以下内容时: { "item": "Bread", "cost": {"currency": "\u0024", "amount": "
我是一名优秀的程序员,十分优秀!