java-如何通过文本内容获取HTML DOM路径?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何通过文本内容获取HTML DOM路径?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2260字,纯文字阅读大概需要4分钟。
内容图文
![java-如何通过文本内容获取HTML DOM路径?](/upload/InfoBanner/zyjiaocheng/671/9c778e2e950f4f0daa9b06e66bc9287b.jpg)
一个HTML文件:
<html>
<body>
<div class="main">
<p id="tID">content</p>
</div>
</body>
</html>
我有一个字符串==“ content”,
我想使用“内容”获取HTML DOM路径:
html body div.main p#tID
chrome开发人员工具具有此功能(Elements标签,底部栏),我想知道如何在Java中做到这一点?
谢谢你的帮助 :)
解决方法:
玩得开心 :)
JAVA代码
import java.io.File;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.DomSerializer;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
public class Teste {
public static void main(String[] args) {
try {
// read and clean document
TagNode tagNode = new HtmlCleaner().clean(new File("test.xml"));
Document document = new DomSerializer(new CleanerProperties()).createDOM(tagNode);
// use XPath to find target node
XPath xpath = XPathFactory.newInstance().newXPath();
Node node = (Node) xpath.evaluate("//*[text()='content']", document, XPathConstants.NODE);
// assembles jquery/css selector
String result = "";
while (node != null && node.getParentNode() != null) {
result = readPath(node) + " " + result;
node = node.getParentNode();
}
System.out.println(result);
// returns html body div#myDiv.foo.bar p#tID
} catch (Exception e) {
e.printStackTrace();
}
}
// Gets id and class attributes of this node
private static String readPath(Node node) {
NamedNodeMap attributes = node.getAttributes();
String id = readAttribute(attributes.getNamedItem("id"), "#");
String clazz = readAttribute(attributes.getNamedItem("class"), ".");
return node.getNodeName() + id + clazz;
}
// Read attribute
private static String readAttribute(Node node, String token) {
String result = "";
if(node != null) {
result = token + node.getTextContent().replace(" ", token);
}
return result;
}
}
XML范例
<html>
<body>
<br>
<div id="myDiv" class="foo bar">
<p id="tID">content</p>
</div>
</body>
</html>
解释说明
>对象文档指向评估后的XML.
> XPath // * [text()=’content’]查找text =’content’的所有内容,并找到节点.
> while循环到第一个节点,获取当前元素的ID和类.
更多说明
>在此新解决方案中,我使用的是HtmlCleaner.因此,例如您可以使用< br> ;,而清洁剂将替换为< br />.
>要使用HtmlCleaner,只需下载最新的jar here.
内容总结
以上是互联网集市为您收集整理的java-如何通过文本内容获取HTML DOM路径?全部内容,希望文章能够帮你解决java-如何通过文本内容获取HTML DOM路径?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。