我有一个看起来像这样的XML
<Books>
<Book id="CL_ZBBB_PEK_VOR_ABC">
<bookReference href="BOO_ZB_DZZ_NDB" type="book"/>
<bookReference href="BOO_ZW_QTV_VOR" type="book"/>
</Book>
<Book id="CL_ZWA_QTV_VOR_DME">
<bookReference href="BOO_ZBAA_IOR_IGP" type="book"/>
<bookReference href="BOO_ZBAA_IOR_LOC" type="book"/>
</Book>
</Books>
我需要遍历href
元素-在每个2个引用的集合之间进行比较,并比较字符串的最后一部分,例如:
//given
"BOO_ZB_DZZ_ABC"
"BOO_ZW_QTV_VOR"
//want to have result 1
DZZ/QTV(ABC/VOR)
In case 2
//given
"BOO_ZBAA_IOR_IGH"
"BOO_ZBAA_IOR_LOC"
//result 2
IOR(IGH/LOC)
In case 3
//given
"BOO_ZBAA_IOR_INM"
"BOO_ZBAA_IOR_INM"
//result 3
IOR(INM/INM)
在每种情况下都忽略BOO_ZBAA,并且如果字符串的第三部分不相同-则用“ /”分隔它们(结果1),如果不是,则只取其中之一(结果2)并将其添加到所有选项中最后3个字母(结果3)中的
我试图进入一个元素-但它只是它的第一步,不知道如何遍历该元素并比较列表中的href值,而不是单个元素,以及如何区分该元素的特定部分和而不是比较它来创建结果字符串(I / Y(A / B)或(I(A / B)
String bookRef = this.entityElement.getChild("bookReference").getAttributeValue("href");
XPathFactory xpath = XPathFactory.instance();
XPathExpression<Element> book = xpath.compile("//*[@id='" + bookRef + "']", Filters.element());
Element bookElement = book.evaluateFirst(entityElement.getDocument());