从给定节点提取子节点数据

Mic*_*l A 4 java dom4j xml-parsing

我想使用DOM4j在Java中解析xml文件.

我以此XML为例:

<request method="POST" url="/devices/test/planner" body="*">
  <response statusCode="200">
    <header>
      <headerParameters>
        <headerParameter name="Content-Type">
          Content-Type=application/xml
        </headerParameter>
      </headerParameters>
    </header>
    <body>booking created!</body>
  </response>
</request>
Run Code Online (Sandbox Code Playgroud)

给定请求(第一个节点)节点,如何提取子节点数据?

例如获取<response>状态代码或<headerParameter>名称属性?

mae*_*ics 5

假设您获得"请求"节点,Element那么您可以执行以下操作:

Element response = (Element) request.elements().get(0);
int statusCode = Integer.parseInt(response.attribute("statusCode"));
Run Code Online (Sandbox Code Playgroud)

如果要以递归方式遍历子节点,则必须编写迭代(或递归)代码来访问elements()方法返回的列表中的每个元素.

[编辑]您还可以使用XPath提取您正在寻找的特定项目:

int statusCode = Integer.parseInt(
    request.selectSingleNode("response/@statusCode").getText());
String firstHeaderName =
    request.selectSingleNode(
        "response/headerParameters/headerParameter/@name").getText();
Run Code Online (Sandbox Code Playgroud)