我继承了一个使用dom4j和xPath解析xml的应用程序:
正在解析的xml类似于以下内容:
WRK_REGISTRATION
77145
WRK_REGISTRATION
77147
WRK_PROCESSING
77152
正在使用以下内容搜索单个节点:
String xPathToGridErrorNode = "//cache/content/transaction/page/widget[@name='PAGE_ID'][text()='WRK_DNA_REGISTRATION']/../widget[@name='TRANS_DETAIL_ID'][text()='77147']/../widget[@name='GRD_ERRORS_TEMP']";
org.dom4j.Element root = null;
SAXReader reader = new SAXReader();
Document document = reader.read(new BufferedInputStream(new ByteArrayInputStream(xmlToParse.getBytes())));
root = document.getRootElement();
Node gridNode = root.selectSingleNode(xPathToGridErrorNode);
其中xmlToParse是xml的String,类似于上面提供的摘录。
代码正在尝试获取具有xPath中提供的PAGE_ID和TRANS_DETAIL_ID的页面的GRD_ERROR节点。
我看到此selectSingleNode请求的间歇性(~1-2%)失败(返回节点为空),即使请求的节点位于正在搜索的xml中。
我知道在xPath中使用text()=有一些问题,并且想知道是否有更好的方法来格式化此类搜索的xPath字符串。