为 json 字符串创建 java 解析器
Creating java parser for json string
我正在尝试将使用 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 或类似方法的方法吗?
谢谢
我可以为您解释 XPath
//*[1]
选择文档中的第一个元素节点。这将是文档元素,这里只能是一个所以有点奇怪。 /*
return同一个节点。
//*[1]/*
或/*/*
return文档元素的所有元素子节点。
[local-name()='tagname']
按本地名称(不带名称空间前缀的标记名称)过滤节点。
完整表达式 //*[1]/*[local-name()='tagname']
使用提供的标记名获取文档元素的所有直接子节点,忽略命名空间。可以简化为/*/*[local-name()='tagname']
.
在不知道 Json 的情况下,这里没有机会说明 JsonPath 应该是什么样子。我不希望 Json 有一个根元素,但我希望这些项目是不同的,因为在 Json 中你不能有多个具有相同键的兄弟姐妹(你可以有多个具有相同键的兄弟姐妹XML).
中的节点名称
我正在尝试将使用 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 或类似方法的方法吗?
谢谢
我可以为您解释 XPath
//*[1]
选择文档中的第一个元素节点。这将是文档元素,这里只能是一个所以有点奇怪。 /*
return同一个节点。
//*[1]/*
或/*/*
return文档元素的所有元素子节点。
[local-name()='tagname']
按本地名称(不带名称空间前缀的标记名称)过滤节点。
完整表达式 //*[1]/*[local-name()='tagname']
使用提供的标记名获取文档元素的所有直接子节点,忽略命名空间。可以简化为/*/*[local-name()='tagname']
.
在不知道 Json 的情况下,这里没有机会说明 JsonPath 应该是什么样子。我不希望 Json 有一个根元素,但我希望这些项目是不同的,因为在 Json 中你不能有多个具有相同键的兄弟姐妹(你可以有多个具有相同键的兄弟姐妹XML).
中的节点名称