java dom xpath_Java:在org.w3c.dom文档中获取元素的xpath
我写了我想要达到的目标.但是,getElementIdx()函数不会返回正确的计数. getPrevIoUsSibling()存在问题,但我不知道为什么.
public static String getElementXpath(DOMElement elt){
String path = "";
try{
for (; elt != null; elt = (DOMElement) elt.getParentNode()){
int idx = getElementIdx(elt);
String xname = elt.getTagName().toString();
if (idx >= 1) xname += "[" + idx + "]";
path = "/" + xname + path;
}
}catch(Exception ee){
}
return path;
}
public static int getElementIdx(DOMElement elt) {
int count = 1;
try{
for (DOMElement sib = (DOMElement) elt.getNextSibling(); sib != null; sib = (DOMElement) sib.getNextSibling())
{
if(sib.getTagName().equals(elt.getTagName())){
count++;
}
}
}catch(Exception ee){
}
return count;
}
你的标题谈到getPrevIoUsSibling(),但你的代码只使用getNextSibling() – 为什么?我不明白为什么你想要使用getNextSibling()…你想知道在当前的那个之前有多少同名的元素,而不是在它之后有多少元素.
你捕捉和吞咽异常这一事实也是非常可疑的……你为什么要这样做呢?如果您有异常,该方法不应该以异常终止吗?
您还应该考虑到getPrevIoUsSibling可能不返回元素这一事实 – 例如,它可能返回一个文本节点.你想要跳过那些 – 目前你会得到一个异常,它将终止循环并返回当前计数.
如果这些没有帮助,请发布一些示例XML,指出一个节点,并说明代码当前返回的内容(以及发布更新的代码).只是说它没有返回正确的计数并不像说它返回什么,以及你期望它返回的那样有用.
编辑:这是我期望代码看起来像:
public static int getElementIndex(Element original) {
int count = 1;
for (Node node = original.getPrevIoUsSibling(); node != null;
node = node.getPrevIoUsSibling()) {
if (node instanceof Element) {
Element element = (Element) node;
if (element.getTagName().equals(original.getTagName()) {
count++;
}
}
}
return count;
}
您也可以使用if(node.getNodeType()== Node.ELEMENT_NODE)而不是instanceof test.
java dom xpath_Java:在org.w3c.dom文档中获取元素的xpath相关推荐
- 将HTML字符转换为DOM节点并动态添加到文档中
将HTML字符转换为DOM节点并动态添加到文档中 将字符串动态转换为DOM节点,在开发中经常遇到,尤其在模板引擎中更是不可或缺的技术. 字符串转换为DOM节点本身并不难,本篇文章主要涉及两个主题: 1 ...
- 将html代码转换为dom,将HTML字符转换为DOM节点并动态添加到文档中
将HTML字符转换为DOM节点并动态添加到文档中 将字符串动态转换为DOM节点,在开发中经常遇到,尤其在模板引擎中更是不可或缺的技术. 字符串转换为DOM节点本身并不难,本篇文章主要涉及两个主题: 1 ...
- Element 对象表示 XML 文档中的元素。
Element 对象 Element 对象表示 XML 文档中的元素.元素可包含属性.其他元素或文本.如果元素含有文本,则在文本节点中表示该文本. 重要事项:文本永远存储在文本节点中.在 DOM 处理 ...
- 文档中根元素后面的标记格式必须正确。
文档中根元素后面的标记格式必须正确. php或其它语言动态输出的xml,最开始<标记 前面有空格,最后面>标记 后面有 空格 导致xml解析出错 解决办法: var data:String ...
- Java使用 PDFBox 2.0 从 PDF 文档中读取所有文本
在本教程中,我们将学习在 Java 程序中使用 PDFBox 2.0 库从 pdf 文档中读取所有文本. PDF 文档可能包含文本.嵌入图像等作为其内容.PDFBox 中的 PDFTextStripp ...
- html文档中的元素分为两部分,云开HTML5开发基础与应用(20秋)形考作业2【标准答案】...
HTML5开发基础与应用(20秋)形考作业2 试卷总分:100 得分:100 一.单选题 (共 10 道试题,共 40 分) 1.下列说法中错误的是:( ). A.text-overflow用于处理 ...
- DOM(Document object madle) 文档对象模型: 元素节点 文本节点 属性节点
[DOM树节点] DOM 节点分为三大类:元素节点 文本节点 属性节点 文本节点 属性节点 为元素节点的两个子节点 通过getElement系列方法,可以去到元素节点. [查看节点] 1.docume ...
- java 实现将图片替换到word 文档中
首先将word 转换成xml ,再修改后缀名位ftl ,并用freemark 标签替换其中的主要设置,模板参考如下 <?xml version="1.0" encoding= ...
- html文档中的元数据,javascript – 如何使用pdf.js从pdf文档中获取元数据
仅使用没有第三方查看器的PDF.js库,您可以使用promises获取这样的元数据. PDFJS.getDocument(url).then(function (pdfDoc_) { pdfDoc = ...
最新文章
- 重置忘记的mysql root密码
- mysql获取当前节点的所有叶子节点_mssql sqlserver 如何获取一个叶子节点下所有子节点呢?...
- php mysql 库存变负数_php解决秒杀并发入库导致的库存负数
- Qt工作笔记-QString中Split与section效率实践
- java freemark 使用_freemarker单独使用介绍
- Django视图与模板+vs2019
- Docker DeskTop安装Jenkins教程[Windows]
- 3-1 Aruba交换机实用配置-VSF 2020
- IPFS为什么被学者称为数据的“黄金保险柜”?
- opencv之subtract
- 大象装进冰箱要几步?Python 来解答
- 发版名词介绍(alpha,beta,RC,Release)
- 新态势感知系列(1):从态势感知到全方位态势感知
- 多人赛跑用多线程实现
- mysql set names中文乱码_mysql中文乱码解析
- Android手机:破解锁屏密码
- Hulu新剧向 | 神剧归位《使女的故事》第四季高能来袭!
- 发票识别 发票扫描识别 一键导出表格 增值税发票扫描识别
- html百度地图拖动,百度地图为marker添加拖拽事件
- web前端动画_西游记
热门文章
- nstimer循环引用_警惕使用NSTimer时的循环引用
- 工作中应用计算机,浅谈计算机在我国计工作中的应用与发展.doc
- python将数据存入mysql数据库中_python3 两种方法将数据存入mysql数据库
- [数据库]---nosql,非关系型数据库整理
- java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!
- 考研数学(180°为什么等于π)
- java 打包后 文件资源文件 jar,JAVA打包成JAR无法找到资源文件
- 302状态码_HTTP协议详解(基础概念 方法 状态码 首部 连接 Cookie 新特性 安全)
- python坐标定位_如何利用Python识别并定位图片中某一个色块的坐标?
- axure html 360安装扩展,win10系统360浏览器添加Axure扩展的操作方法