You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java读取API返回XML:提取virtualFile元素并拼接信息

Java读取XML中virtualFile子元素的解决方案

假设XML结构示例

先明确你的API返回XML大概结构(如果实际结构不同,调整节点名称即可):

<response>
  <webUser>
    <name>Aditya</name>
    <virtualFileList>
      <virtualFile>
        <alias>工作文档</alias>
        <folderPermissions>read,write</folderPermissions>
        <path>/company/work/docs</path>
      </virtualFile>
      <virtualFile>
        <alias>个人相册</alias>
        <folderPermissions>read</folderPermissions>
        <path>/user/aditya/photos</path>
      </virtualFile>
    </virtualFileList>
  </webUser>
</response>

基于DOM解析的实现代码

用Java原生DOM API即可解决,核心是遍历virtualFile节点并提取子元素文本:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;

public class XmlParser {
    public static void main(String[] args) {
        // 替换为你的API返回XML字符串
        String xmlStr = "<response><webUser><name>Aditya</name><virtualFileList><virtualFile><alias>工作文档</alias><folderPermissions>read,write</folderPermissions><path>/company/work/docs</path></virtualFile><virtualFile><alias>个人相册</alias><folderPermissions>read</folderPermissions><path>/user/aditya/photos</path></virtualFile></virtualFileList></webUser></response>";

        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new ByteArrayInputStream(xmlStr.getBytes()));
            doc.getDocumentElement().normalize();

            // 获取webUser的name
            Element webUser = (Element) doc.getElementsByTagName("webUser").item(0);
            String userName = webUser.getElementsByTagName("name").item(0).getTextContent();
            System.out.println("用户名:" + userName);

            // 遍历所有virtualFile节点
            NodeList virtualFileList = doc.getElementsByTagName("virtualFile");
            for (int i = 0; i < virtualFileList.getLength(); i++) {
                Element virtualFile = (Element) virtualFileList.item(i);
                // 提取子元素文本,处理可能的空节点情况
                String alias = virtualFile.getElementsByTagName("alias").getLength() > 0 
                    ? virtualFile.getElementsByTagName("alias").item(0).getTextContent() 
                    : "无别名";
                String permissions = virtualFile.getElementsByTagName("folderPermissions").getLength() > 0 
                    ? virtualFile.getElementsByTagName("folderPermissions").item(0).getTextContent() 
                    : "无权限";
                String path = virtualFile.getElementsByTagName("path").getLength() > 0 
                    ? virtualFile.getElementsByTagName("path").item(0).getTextContent() 
                    : "无路径";
                
                // 按指定格式拼接并输出
                System.out.printf("%s\\%s\\%s%n", alias, permissions, path);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键说明

  • 如果你的XML中virtualFile的父节点不是virtualFileList,替换成实际的父节点名称即可
  • 代码中加入了空节点判断,避免因某个子元素缺失导致空指针异常
  • 每个virtualFile对应一行输出,自动实现多文件夹权限的多行展示

内容的提问来源于stack exchange,提问作者Aditya Bhatnagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:19:58