Я пишу программу java для поиска текста и возврата его информации о узле.xpath для xml для получения информации об узле
- Программа должна искать текст в любом месте документа и.
- Возврат 5 предопределенных узлов и значений узлов.
Пример XML-файла: -
<project xmlns="https://example.hoom/go/bing">
<name>purchaseOrder </name>
<property name="included" type="hidden">true</property>
<locales>
<locale>en</locale>
<locale>hi</locale>
</locales>
<defaultLocale>en</defaultLocale>
<gamespace>
<name locale="en">hambook</name>
<name locale="de">hambook</name>
<lastChanged>2014-03-05T18:47:30</lastChanged>
<lastChangedBy>userx</lastChangedBy>
<property name="included" type="hidden">true</property>
<gamespace>
<name locale="en">DbBook</name>
<name locale="zw">DbBook</name>
<hecrotSubject status="valid">
<name locale="en">hexValue</name>
<name locale="zw">hexValue</name>
<hecrotItem>
<name locale="en">hireValue</name>
<name locale="zw">hireValue</name>
<hello>searchTerm</hello>
</hecrotItem>
</hecrotSubject>
</gamespace>
</gamespace>
<gamespace>
<name locale="en">Names</name>
<lastChanged>2016-01-12T12:42:46</lastChanged>
<gamespace>
<name locale="en">Database Layer</name>
<name locale="zw">Database Layer</name>
<hecrotSubject status="valid">
<name locale="en">qsxyz</name>
<hecrotItem>
<name locale="en">myName</name>
<hello>...Hi there..</hello>
</hecrotItem>
</hecrotSubject>
</gamespace>
</gamespace>
</project>
Мой текущий XPath является: -
"//*[local-name()='gamespace']/*[local-name()='hecrotSubject']/*[local-name()='hecrotItem'][contains(., '"& searchTerm &"')]/ancestor-or-self::*/*[local-name()='name' and @locale='en']"
Что дает только корневой тег, используя xpath.compile().evaluate()
. Пока мне нужен
Значение имени пяти предопределенных узлов, если они содержат текст поиска (searchTerm в этом примере xml).
результат выборки должен быть: -
Project - PurchaseOrder
gamespace - Hambook
gamespace - DbBook
hecrotSubject - hexValue
hecrotItem - hireValue
Редактировать
Я использую следующие заявления в Java: -
String expression = Xpath;
Strings vals = xPath.compile(expression).evaluate(xmlDocument);
System.out.println(vals);
что вы уже сделали? где вы застряли? –
Я использую инструкцию followin в java: - Строковое выражение = Xpath; Строки vals = xPath.compile (выражение) .evaluate (xmlDocument); System.out.Println (Vals); – user2816085
у вас есть недопустимый запрос xpath (проверено через xmlspy), для получения имени '' '/ project/gamespace/name''', получите hecroSubject:' ''/project/gamespace/gamespace/hecrotSubject''' –