我正在尝试使用java从WSDL文件动态创建gui。 我需要检索与每个操作相关的消息。 为此,我需要动态分配 XPath 表达式值。 我分配的表达式如下
String expression="/definitions/portType/operation[@name="+oper[i]+"]/*";
NodeList msglist= (NodeList)xpath.expressionxpath.compile(expression1).evaluate(doc,XPathConstants.NODESET);
System.out.println("The Number of messages are"+msglist.getLength());
这里 oper[i] 是包含操作名称列表的数组。 但当我打印 msglist 中的节点数时它不起作用,它总是显示 0。 我的 WSDL 文件包含 2 个操作元素的子元素。 任何人都可以帮助我吗? 提前致谢
最佳答案
从评论来看,模式是:
/definitions/portType/opeation[@name=sayHello]/*
匹配字符串周围的引号丢失。应该是:
/definitions/portType/opeation[@name="sayHello"]/*
所以你的模式应该是:
String expression="/definitions/portType/operation[@name=\""+oper[i]+"\"]/*";
使用 MessageFormat
或 String.format
可能会更清晰:
String expression=String.format("/definitions/portType/operation[@name=\"%s\"]/*", oper[i]);
关于java - java中xpath表达式动态赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219544/