Dom JavaFXWebEngine和XPath区分大小写问题?
我有一个来自JavaFX2.2WebEngine的文档对象。在下面的代码中,即使加载的文档具有小写的html标记,getDocumentElement().getNodeName()也会以大写返回它。因此,XPath查询无法定位节点(因为它需要小写的html标记)。在这种情况下,我可以强制getNodeName()的输出为小写,但一般来说,如果文档有混合大小写标记,如何处理它Dom JavaFXWebEngine和XPath区分大小写问题?,dom,xpath,javafx,Dom,Xpath,Javafx,我有一个来自JavaFX2.2WebEngine的文档对象。在下面的代码中,即使加载的文档具有小写的html标记,getDocumentElement().getNodeName()也会以大写返回它。因此,XPath查询无法定位节点(因为它需要小写的html标记)。在这种情况下,我可以强制getNodeName()的输出为小写,但一般来说,如果文档有混合大小写标记,如何处理它 public class XPath3 extends Application { WebView view; Web
public class XPath3 extends Application {
WebView view;
WebEngine engine;
@Override
public void start(Stage primaryStage) {
view = new WebView();
engine = view.getEngine();
engine.getLoadWorker().stateProperty().addListener(
new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State t, Worker.State t1) {
if (t1 == Worker.State.SUCCEEDED) {
Document doc = engine.getDocument();
XPath xPath = XPathFactory.newInstance().newXPath();
xPath.setNamespaceContext(new NamespaceContext() {
@Override
public String getNamespaceURI(String pfx) {
if ("ns1".equals(pfx)) {
return "http://www.w3.org/1999/xhtml";
}
return XMLConstants.NULL_NS_URI;
}
@Override
public String getPrefix(String string) {
return null;
}
@Override
public Iterator getPrefixes(String string) {
return null;
}
});
NodeList nl = null;
String path = "/ns1:" + doc.getDocumentElement().getNodeName();
//path = "/ns1:html";
System.out.println(path);
try {
nl = (NodeList) xPath.compile(path).evaluate(doc, XPathConstants.NODESET);
} catch (XPathExpressionException ex) {
System.exit(-11);
}
System.out.println("XPath: " + path + " Count: " + nl.getLength());
System.exit(-1);
}
}
});
Platform.runLater(new Runnable() {
@Override
public void run() {
engine.loadContent("<html><body> hello! </body></html>");
}
});
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
公共类XPath3扩展了应用程序{
网络视图;
网络引擎;
@凌驾
公共无效开始(阶段primaryStage){
视图=新的WebView();
engine=view.getEngine();
engine.getLoadWorker().stateProperty().addListener(
新的ChangeListener(){
@凌驾
公共无效已更改(可观察值)