【问题标题】:Creating java parser for json string为json字符串创建java解析器
【发布时间】:2015-03-06 19:54:35
【问题描述】:

我正在尝试将使用 Xpath 解析 XML 的 java 方法转换为使用 JsonPath 的方法,但我无法转换 Xpath 解析器正在执行的操作,因此我可以使用 JsonPath 复制它。

这是当前解析“String body”的代码。

public static String parseXMLBody(String body, String searchToken) {
    String xPathExpression;
    try {
            // we use xPath to parse the XML formatted response body
        xPathExpression = String.format("//*[1]/*[local-name()='%s']", searchToken);
        XPath xPath = XPathFactory.newInstance().newXPath();
        return (xPath.evaluate(xPathExpression, new InputSource(new StringReader(body))));
    } catch (Exception e) {
            throw new RuntimeException(e); // simple exception handling, please review it
    }
}

任何人都可以帮助将其转换为使用 JsonPath 或类似方法的方法吗?

谢谢

【问题讨论】:

标签: java xml json parsing jsonpath


【解决方案1】:

我可以为你解释 XPath

//*[1] 选择文档中的第一个元素节点。这将是文档元素,这里只能是一个,所以有点奇怪。 /* 返回相同的节点。

//*[1]/*/*/* 返回文档元素的所有元素子节点。

[local-name()='tagname'] 按节点的本地名称(不带命名空间前缀的标记名称)过滤节点。

完整的表达式//*[1]/*[local-name()='tagname'] 使用提供的标记名获取文档元素的所有直接子节点,忽略命名空间。可以简化为/*/*[local-name()='tagname']

不知道 Json,这里没有机会说 JsonPath 应该是什么样子。我不希望 Json 有一个根元素,但我希望这些项目会有所不同,因为在 Json 中,您不能有多个具有相同键的兄弟姐妹(您可以在 XML 中拥有多个具有相同节点名称的兄弟姐妹)。

【讨论】:

  • 需要更多研究才能弄清楚,但这有帮助,谢谢
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 2012-08-06
  • 2015-04-30
  • 1970-01-01
相关资源
最近更新 更多