gpt4 book ai didi

java - 如何在 JAVA 中使用 STAX 解析器读取标签内的值

转载 作者:行者123 更新时间:2023-12-01 19:05:37 24 4
gpt4 key购买 nike

我有一个如下所示的 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) ,我得到了上面的响应。基于“Literal”值,我需要执行一些业务逻辑并设置为我的 USER DTO。

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

最佳答案

首先您需要了解一些技术术语。在 XML 中,您的 userCompany 是一个元素,而 LITERAL 是该元素的一个属性。

使用StAX,您首先会从 XMLInputFactory 获得一个阅读器。我更喜欢 XMLEventReader。该读取器能够迭代给定 XML 中的所有 XML 元素。如果您找到了想要的StartElement - userCompany 在您的情况下 - 那么您可以从中获取名为“LITERAL”的属性的值。

对于命名 XML 元素和属性,使用 QName 而不是简单的 String。这是因为 QName 能够考虑不同的 namespace 。

示例:

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
}
}
}
}
}

关于java - 如何在 JAVA 中使用 STAX 解析器读取标签内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59561930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com