Comments (3)
With a bit of hacking I've found a way to configure a local installation (through Gradle) to use nekohtml 2.59.
Configure your build.gradle
to exclude the transitive dependency:
implementation("net.sf.cssbox:cssbox:$cssboxVersion") {
exclude group: "net.sourceforge.nekohtml", module: "nekohtml"
}
implementation "net.sourceforge.htmlunit:neko-htmlunit:$nekoHtmlUnitVersion"
And then it looks like the only change one needs to make is to not use DefaultDOMSource
:
public class BetterDOMSource extends DOMSource {
public BetterDOMSource(DocumentSource src) {
super(src);
}
@Override
public Document parse() throws SAXException, IOException {
DOMParser parser = new DOMParser(new HTMLConfiguration(););
parser.setProperty("http://cyberneko.org/html/properties/names/elems", "lower");
if (charset != null)
parser.setProperty("http://cyberneko.org/html/properties/default-encoding", charset);
parser.parse(new org.xml.sax.InputSource(getDocumentSource().getInputStream()));
return parser.getDocument();
}
}
And use this source to load your Documents
instead:
ByteArrayInputStream is = new ByteArrayInputStream(html.getBytes(Charset.forName("UTF-8")));
StreamDocumentSource source = new StreamDocumentSource(is, url, "text/html");
DOMSource parser = new BetterDOMSource(source);
Document document = parser.parse();
from cssbox.
I think we can use org.htmlunit:htmlunit-neko:3.6.0
for CSSBox project.
It solves CVE-2022-29546 and CVE-2022-28366.
I've changed DefaultDOMSource
like
public Document parse() throws SAXException, IOException
{
DOMParser parser = new DOMParser(HTMLDocumentImpl.class);
parser.setProperty("http://cyberneko.org/html/properties/names/elems", "lower");
if (charset != null)
parser.setProperty("http://cyberneko.org/html/properties/default-encoding", charset);
parser.parse(new org.xml.sax.InputSource(getDocumentSource().getInputStream()));
return parser.getDocument();
}
from cssbox.
I've proposed the change to [email protected] in Apr. 2023, and further update today.
#81
from cssbox.
Related Issues (20)
- Nested tags (with inline styles) don't work for styles with text-decoration HOT 1
- InlineBox vs. Blockbox in 4.17 -> no more rendering possible HOT 9
- How to set transparency background? HOT 2
- no fontmanager in java.library.path HOT 2
- DomParser crashes on null pointer exception HOT 2
- Can't get this to work on windows HOT 1
- Cannot wrap according to the displayed size HOT 4
- Does not support Chinese word wrap
- Update Layout without creating from scratch HOT 3
- DefaultDOMSource Document#getElementById() doesn't work HOT 1
- Text containing < or > are decoded to < or > symbols when parsed HOT 1
- Elements with display: none should not affect the layout of other elements
- Is border-radius not supported HOT 1
- demo doesnt work. HOT 2
- Text overlapping issues for FontVetter Unsupported fonts
- Would or could it be possible to create a rendering engine with yaml and css?
- CSS Box didn't support line-height.
- how to find mian content css selector by this project
- SwingBox Chinese garbled code
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cssbox.