[英]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.