【问题标题】:How to extract sub element as String from XML如何从 XML 中提取子元素作为字符串
【发布时间】:2021-02-02 13:51:20
【问题描述】:

我有一个字符串格式的 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 新手,不知道如何实现。

【问题讨论】:

    标签: java xml xml-parsing


    【解决方案1】:

    这应该可行:

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

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2019-03-04
      • 2019-01-28
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多