如何在Java中使用XPath获取3个同名节点的相同属性值?
我有XML文件的以下节点:如何在Java中使用XPath获取3个同名节点的相同属性值?,java,xml,xpath,Java,Xml,Xpath,我有XML文件的以下节点: <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
xmlns:tns="http://www.jboss.org/drools"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
id="Definition"
targetNamespace="http://www.example.org/MinimalExample"
typeLanguage="http://www.java.com/javaTypes"
expressionLanguage="http://www.mvel.org/2.0"
xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
>
<process processType="Private" isExecutable="true" id="com.sample.HelloWorld" name="Hello World">
<!-- nodes -->
<startEvent id="_1" name="StartProcess" />
<scriptTask id="_2" name="Hello">
<script>System.out.println("Hello World");</script>
</scriptTask>
<endEvent id="_3" name="EndProcess">
<terminateEventDefinition />
</endEvent>
<!-- connections -->
<sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" />
<sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
</process>
</definitions>
System.out.println(“你好世界”);
我想使用XPath获取每个sequenceFlow节点的sourceRef属性的所有值
我构建了一个for循环:
if (n.getNodeName().equals("sequenceFlow")) {
countsequenceFlows ++;
for (int i=0; i<=countsequenceFlows;i++) {
sourceRef = xml.getParameterString("(//sequenceFlow/@sourceRef)[i]");
System.out.println(sourceRef);
}
}
if(n.getNodeName().equals(“sequenceFlow”)){
countsequenceFlows++;
对于(int i=0;i您希望选择i
-thsequenceFlow
节点的sourceRef
属性。使用以下方法:
sourceRef = xml.getParameterString("//sequenceFlow[" + i + "]/@sourceRef");
您需要将i
填充到查询字符串中。已更新我的答案。您使用的是哪种编程语言?我使用JAVA,即使在修改后,我也会得到相同的空行xml
是否使用名称空间?我已添加我的xml文件您需要注册名称空间,然后使用名称空间访问元素。什么pe有xml
?