使用Java从XML中按属性值获取子节点

时间:2018-09-05 13:56:10

标签: java xml

<?xml version="1.0"?>
<AllConcepts>
    <Level id="1">
        <TST>RegisterPatient</TST>
    </Level>
    <Level id="2">
        <TST>PersonwithInpatientEncounter</TST> 
        <TST>InpatientwithDiagnoses</TST> 
        <TST>InpatientwithRadiologyOrder</TST>      
    </Level>
    <Level id="3">
        <TST>InpatientwithProblem</TST> 
        <TST>InpatientwithAllergy</TST>             
    </Level>
</AllConcepts>

以上是我的XML。 请通过提供Java值来帮助我获取子节点ID。

示例:

  • 如果我给value=InpatientwithDiagnoses,它应该给我节点2;
  • 如果我给value = RegisterPatient,它应该给我节点1。

2 个答案:

答案 0 :(得分:1)

我建议使用SAAJ!

这是一个很棒的Java库,为我们提供了XML文档的Java功能。您可以使用此库来构造,编辑或制作SOAP消息。一旦创建了SOAP对象,您就可以从那里提取所需的内容。

以下是您可以用来创建该Java对象的内容:

// Use SAAJ to convert Document to SOAPElement
// Create SoapMessage
SOAPMessage message = createSOAPMessage();
SOAPBody soapBody = message.getSOAPBody();
// This returns the SOAPBodyElement
SOAPElement xml = soapBody.addDocument(doc);

然后类似这样从XML主体获取内容:

java.util.Iterator iterator = soapBody.getChildElements(bodyName);
SOAPBodyElement bodyElement = (SOAPBodyElement)iterator.next();
String node = bodyElement.getValue();

参考文献:
https://docs.oracle.com/javase/7/docs/api/javax/xml/soap/SOAPMessage.html https://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html#bnbhz

答案 1 :(得分:0)

您可以使用java.xml.xpath-无需安装第三方库。

并使用此xpath获取给定的TST值所需的元素。

//TST[.='<value>']/parent::Level

其中<value>可以是RegisterPatientInpatientwithDiagnoses或其他任何东西。

请参阅Java的xpath文档here

相关问题