#java #xml #xpath #soap #xml-parsing
#java #xml #xpath #soap #синтаксический анализ xml
Вопрос:
Файл XML выглядит следующим образом :
Код, который я написал:
Запрос списка xmlusingxpathandreturnlist(строка xml, строка xpathExpression) {
DocumentBuilderFactory DbFactory = DocumentBuilderFactory.newInstance()
DocumentBuilder dBuilder = DbFactory.newDocumentBuilder()
Документ doc = dBuilder.parse(новый ByteArrayInputStream(xml.getBytes(стандартные наборы символов.UTF_8)))
doc.getDocumentElement().normalize()
XPath XPath = XPathFactory.newInstance().newXPath()
Список узлов Список узлов = (список узлов) XPath.compile(xpathExpression).evaluate(документ, XPathConstants.NODESET)
Список возвращаемых элементов = новый ArrayList<>()
NodeList.each { n ->
returnElements.add(n.getTextContent())
}
Когда я передаю xpath как:
/Envelope/Body/CommandResponseData/OperationResult/Operation/ParameterList/ListParameter/StringElement
Он возвращает все значения. Но я хочу возвращать только значения ListParameter, имя которых =»PackageTypeList».
Для этого я использую xpath как:
/Envelope/Body/CommandResponseData/OperationResult/Operation/ParameterList/ListParameter[@name=’PackageTypeList’]/StringElement
Но он возвращает list как null.
Комментарии:
1. Картинки бесполезны. Пожалуйста, отредактируйте свой пост и добавьте свой XML в виде текста.
Ответ №1:
Я думаю, вы пропустили «CommandResult» между «CommandResponseData» и «OperationResult» в вашем XPath-выражении.
Комментарии:
1. Кажется, я неправильно вставил его. Мой xpath: /Envelope/Body/CommandResponseData/CommandResult/OperationResult/Operation/ParameterList/ListParameter[@name=’PackageList’]/ StringElement по-прежнему получает нулевой ответ. Если я удалю [@name=’PackageList’] , я получу все значения, но, как я уже упоминал, мне нужны конкретные данные, имя которых =PackageList .