当前位置: 首页 > 知识库问答 >
问题:

如何在Java中从XML响应中获取特定的字段值?

鲜于海
2023-03-14

当我打印我的API响应时,它给出了下面的xml作为响应:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <BugInfo xmlns="ctessng" xmlns:ns2="http://www.w3.org/1999/xlink">
   <Bug id="CSCvz53137">
    <Field name="Assigned Date">09/01/2021 21:12:25</Field>
    <Field name="Archived">N</Field>
    <Field name="Assigner">James Vilson</Field>
    <Field name="Status">V</Field>
    <Field name="Submitter">Spark Mery</Field>
    <Field name="Reason">Technically Inaccurate</Field>
    <Field name="Regression">Y</Field>
    <Field name="Resolved Date">09/02/2021 02:12:37</Field>
    <Field name="Version">001.010</Field>
   </Bug>
</BugInfo>
Assigned Date --> 09/01/2021 21:12:25
Assigner --> James Vilson
Submitter --> Spark Mery
Resolved Date --> 09/02/2021 02:12:37

共有1个答案

燕凯旋
2023-03-14

最通用的是使用正则表达式的纯文本过滤(匹配/查找、提取):

(.*)<

使用find(),然后使用group(1)group(2)迭代可以给出所需的字符串。

/buginfo/bug/field[@name=“赋值者”]//field[@name=“赋值日期”]//field[@name=“提交者”]//field[@name=“解析日期”]

迭代找到的节点,我们可以将子节点提取为文本值。

XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xPath.compile(xPathExpression).evaluate(xmlDocument, XPathConstants.NODESET);

参见:

    null
class Bug {
    String submitter;
    String assigner;
    Date assignedOn;
    Date resolvedOn
}

这里的映射可能有点棘手,因为从XML模型的角度来看,bug节点包含一个子字段的集合。但目标类型在语义上不是字段列表,而是具有不同类型属性的bug对象。

这可能是最干净的,因为它很容易解析:bug bug=new XmlMapper().readvalue(xmlString,bug.class)

 类似资料:
  • 问题内容: 我有一个动作类,其中定义了许多动作方法,还定义了适当的getter和setter方法。我有一些操作方法,可以通过从jQuery调用它们来从json中获取数据。但是当我获取json数据时,它包括为getter和setter定义的所有字段,但是我只想获取由我要调用的方法填充的字段。例如- 当我通过jQuery调用方法m2并获得json响应时 但我只想要 问题答案: 默认情况下,result

  • 问题内容: 我正在尝试使用其开放的API获取特定Subreddit的顶级提交列表: 不幸的是,这不起作用,因为实际的提交列表嵌套在响应中。如何将数据json数组(在元素中)解组为struct 类型的数组? 问题答案: 创建更多模拟JSON确切形状的结构(就像您的结构一样)。解组到最顶层的结构之一,然后访问该结构的适当成员。

  • 我得到了响应从REST API到响应对象后,通过RestAsared API调用。 响应主体是json,我想从中获取特定的键值吗? 以下是代码 如何在字符串中获取特定的键值?

  • 我有一个具有如下结构的数据帧: 但是是Any类型,我无法提取它的任何字段。有人能说出我做错了什么,或者我应该遵循什么方法来代替这个吗? 谢谢

  • 问题内容: 这是一项学术任务,我们将获得一个非常大的XML文件,其中包含数百个此类条目。对于每个项目,我们都应列出经理的ID,将项目添加到列表中的最后一个人员的人员ID以及当前的项目数。我已阅读并重新阅读了Oracle DOM API和各种Node API。我们正在使用JAVA,我一生都无法弄清楚如何搜索每个节点的各个“字段” 。以下是我们提供的数据示例。 我尝试做类似的事情: 并弄乱了这段代码一

  • 我想从字符串类型的REST响应(json或xml)中提取值。我尝试了以下代码: 但是它包含了 根本原因是RestAssuredConfig对象在RestAssuredResseOptionsGroovyImpl中为空 那么,既然我已经有了字符串响应,那么在没有get()或post()的情况下,如何从原始字符串响应正确构造Response对象呢?