[英]How to extract sub element as String from XML
我有一个字符串格式的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<ns4:DataRequest xmlns:ns4="urn:com:sony:xsd:DataRequest001" xmlns:ns2="urn:com:sony:xsd:pay001" xmlns:ns3="urn:com:sony:xsd:common">
<Hdr>
<Date>2021-01-28T13:29:00</Date>
<CallType>Item_Check</CallType>
<CallSubType>TFT</CallSubType>
<CallId>12345</CallId>
</Hdr>
<Pld>
<SpecData>
<MainSpec>
<AppId>123</AppId>
<Size>123</Size>
<Amt>2000</Amt>
<Payld><data><id>Id001</tag></data></Payld>
</MainSpec>
</SpecData>
</Pld>
</ns4:DataRequest>
我正在使用以下代码提取payld:
String payload = null;
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(new StringReader(xmlAsString));
while (reader.hasNext()) {
reader.next();
if (reader.isStartElement()) {
if ("payld".equalsIgnoreCase(reader.getLocalName())) {
payload = reader.getElementText();
break;
}
}
}
现在要在字符串中提取 SpecData 标记值,例如:
String specData = "<MainSpec><AppId>....</AppId><MainSpec>";
XMLStreamReader 的新手,不知道如何实现。
这应该有效:
String specData = null;
String payload = null;
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(new StringReader(xmlAsString));
while (reader.hasNext()) {
reader.next();
if (reader.isStartElement()) {
if ("appId".equalsIgnoreCase(reader.getLocalName())) {
specData = reader.getElementText();
continue;
}
else if ("payld".equalsIgnoreCase(reader.getLocalName())) {
payload = reader.getElementText();
break;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.