为json字符串创建java解析器

时间:2015-03-06 19:54:36

标签: java xml json parsing jsonpath

我正在尝试将使用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或类似方法的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

我可以为你解释XPath

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

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

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

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

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