繁体   English   中英

如何从 XML 中提取子元素作为字符串

[英]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>&lt;data&gt;&lt;id&gt;Id001&lt;/tag&gt;&lt;/data&gt;</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM