Java 使用JDOM查找子元素
有没有一种方法可以像使用jQuery一样使用JDOM查找子元素 我正在尝试从这个XML文档中获取sequence元素:Java 使用JDOM查找子元素,java,xml,jdom,jdom-2,Java,Xml,Jdom,Jdom 2,有没有一种方法可以像使用jQuery一样使用JDOM查找子元素 我正在尝试从这个XML文档中获取sequence元素: <getEmployeesXMLResponse xmlns="http://tempuri.org/"> <getEmployeesXMLResult> <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xm
<getEmployeesXMLResponse xmlns="http://tempuri.org/">
<getEmployeesXMLResult>
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true"
msdata:MainDataTable="ListOfEmployees"
msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ListOfEmployees">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" />
<xs:element name="department" type="xs:string"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<DocumentElement xmlns="">
<ListOfEmployees diffgr:id="ListOfEmployees1"
msdata:rowOrder="0">
<name>Paul</name>
<department>Sales</department>
</ListOfEmployees>
<ListOfEmployees diffgr:id="ListOfEmployees2"
msdata:rowOrder="1">
<name>Bob</name>
<department>Marketing</department>
</ListOfEmployees>
</DocumentElement>
</diffgr:diffgram>
</getEmployeesXMLResult>
</getEmployeesXMLResponse>
但我想一定有更好的办法
感谢您的建议使用XPath并在此处阅读:以及更多关于它的信息: 底线是您希望使用表达式“//xs:sequence”和名称空间namespace.getNamespace(“xs”),编译XPath
rolfl谢谢。我将代码替换为`Namespace.getNamespace(“xs”,“w3.org/2001/XMLSchema”);XPathExpression xpath=XPathFactory.instance().compile(“//xs:sequence”,Filters.element());元素currentEl=xpath.evaluateFirst(文档);`但现在我得到了“错误500:javax.servlet.ServletException:java.lang.IllegalArgumentException:前缀为'xs'的命名空间尚未声明”。有什么想法吗?您必须在编译操作中包含xs命名空间(变量映射为null):XPathExpression xpath=XPathFactory.instance().compile(//xs:sequence),Filters.element(),null,xs);必须为XPath表达式的上下文声明名称空间,而不仅仅是XML文档
Element currentEl = document.getRootElement();
do {
currentEl = currentEl.getChildren().get(0);
} while (currentEl.getName() != "sequence");