簡體   English   中英

如何在 JAVA 中使用 STAX 解析器讀取標簽內的值

[英]How to read values inside a tag using STAX parser in JAVA

我有一個像下面這樣的 xml。

<user VERSION_NO="1">
<userCompany QTAG="30000-9" LITERAL="Pharmaxy Group" CA_ID="33">PG</userCompany></user>

其中“user”是我的父 USER DTO,在 DTO 中我有像“userCompany”這樣的屬性。

我正在訪問 webservice(soap) ,在那里我得到了如上的響應。 基於“文字”值,我需要執行一些業務邏輯並設置為我的 USER DTO。

那么如何使用 STAX 讀取“LITERAL”值?

首先,您需要了解一些技術術語。 XML您的userCompany是一個元素,而LITERAL是該元素的一個屬性。

使用StAX您首先從XMLInputFactory獲得一個讀取器。 我更喜歡XMLEventReader 該閱讀器能夠遍歷給定XML所有XML元素。 如果您找到了想要的StartElement - 在您的情況下是userCompany - 那么您可以從中獲取名為“LITERAL”的屬性的值。

對於命名XML元素和屬性,使用QName s 而不是簡單的String s。 這是因為QName能夠考慮不同的名稱空間。

例子:

import java.io.StringReader;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.namespace.QName;

public class StAXGetAttributeValue {

 static String getAttributeValue(StartElement startElement, QName attributeName) {
  Attribute attribute = startElement.getAttributeByName(attributeName);
  String attributeValue = attribute.getValue();
  return attributeValue;
 }

 public static void main (String args[]) throws Exception {

  String xmlString = "<user VERSION_NO=\"1\"><userCompany QTAG=\"30000-9\" LITERAL=\"Pharmaxy Group\" CA_ID=\"33\">PG</userCompany></user>";

  XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(new StringReader(xmlString));
  while (reader.hasNext()) {
   XMLEvent event = reader.nextEvent();
   if(event.isStartElement()) {
    StartElement startElement = (StartElement)event;
    QName startElementName = startElement.getName();  
    if("userCompany".equals(startElementName.getLocalPart())) {
     String valueOf_LITERAL_Attribute = getAttributeValue(startElement, QName.valueOf("LITERAL"));
     System.out.println(valueOf_LITERAL_Attribute); //prints Pharmaxy Group
    }
   }
  }
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM