java - java中xpath表达式动态赋值

标签 java xpath wsdl

我正在尝试使用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]+"\"]/*";

使用 MessageFormatString.format 可能会更清晰:

String expression=String.format("/definitions/portType/operation[@name=\"%s\"]/*", oper[i]);

关于java - java中xpath表达式动态赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219544/

相关文章:

c# - 需要一种方法将任何类型的节点从 BizTalk 规则引擎内传递给自定义函数

python - 如何在不考虑 div 索引的情况下识别 XPath?

iOS SOAP WCF 调用问题 - HTTP 415 错误

java - 我是否需要服务器将我的应用程序中创建的 PDF 发送到另一台设备上的同一应用程序(不同的帐户)?

java - android从内部存储中删除文件

xml - 如何复制 xml 元素

wsdl - svcutil 生成不必要的包装类

Android ksoap2 可空类型

java - 让java gui在网络浏览器中打开网页

java - 我们可以对不同包名称中的所有 webServies 使用相同的 @HandlerChain 吗?