Java 如何使用xpath编辑特定的xml
下面是使用xslt函数json-to-xml()生成的xml。我需要使用给定的XPath更新此xml,如结果xml所示。我需要java或xslt的解决方案。任何帮助都将不胜感激 XMLJava 如何使用xpath编辑特定的xml,java,xml,xslt,xpath,jsonpath,Java,Xml,Xslt,Xpath,Jsonpath,下面是使用xslt函数json-to-xml()生成的xml。我需要使用给定的XPath更新此xml,如结果xml所示。我需要java或xslt的解决方案。任何帮助都将不胜感激 XML <?xml version="1.0" encoding="UTF-8"?> <map xmlns="http://www.w3.org/2005/xpath-functions"> <map key="Response"> &
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<map key="Response">
<map key="Headers">
<string key="server">Lisa</string>
<string key="Status-Code">200</string>
<string key="Content-Type">applicaton/json</string>
</map>
<map key="Payload">
<map key="root">
<array key="cars">
<map>
<string key="company">ccc</string>
<string key="model">mmm</string>
</map>
<map>
<string key="strength">666</string>
<string key="Capacity">333</string>
</map>
</array>
<array key="bikes">
<map>
<string key="company">abc</string>
<string key="model">2018</string>
</map>
</array>
</map>
</map>
</map>
</map>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<map key="Response">
<map key="Headers">
<string key="server">WebSphere</string>
<string key="Status-Code">400</string>
<string key="Content-Type">text</string>
</map>
<map key="Payload">
<map key="root">
<array key="cars">
<map>
<string key="company">ccc1</string>
<string key="model">mmm1</string>
</map>
<map>
<string key="strength">999</string>
<string key="Capacity">555</string>
</map>
</array>
<array key="bikes">
<map>
<string key="company">xyz</string>
<string key="model">2019</string>
</map>
</array>
</map>
</map>
</map>
</map>
更新的结果XML
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<map key="Response">
<map key="Headers">
<string key="server">Lisa</string>
<string key="Status-Code">200</string>
<string key="Content-Type">applicaton/json</string>
</map>
<map key="Payload">
<map key="root">
<array key="cars">
<map>
<string key="company">ccc</string>
<string key="model">mmm</string>
</map>
<map>
<string key="strength">666</string>
<string key="Capacity">333</string>
</map>
</array>
<array key="bikes">
<map>
<string key="company">abc</string>
<string key="model">2018</string>
</map>
</array>
</map>
</map>
</map>
</map>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<map key="Response">
<map key="Headers">
<string key="server">WebSphere</string>
<string key="Status-Code">400</string>
<string key="Content-Type">text</string>
</map>
<map key="Payload">
<map key="root">
<array key="cars">
<map>
<string key="company">ccc1</string>
<string key="model">mmm1</string>
</map>
<map>
<string key="strength">999</string>
<string key="Capacity">555</string>
</map>
</array>
<array key="bikes">
<map>
<string key="company">xyz</string>
<string key="model">2019</string>
</map>
</array>
</map>
</map>
</map>
</map>
WebSphere
400
文本
库来解析/更改给定XPath上的json值。最后使用xslt函数将json再次更改为xml。这对我来说很有魅力!!
但是在使用这个库之后,我开始在我的应用程序的其他部分遇到问题:(.所有带有json请求体的post请求开始给出400错误。错误是“错误400客户端发送的请求在语法上不正确”。我无法理解问题,可能是由于不同的jar限制。
因此,我正在尝试其他方法。任何其他库,如Jayway JsonPath?或任何其他解决方案/建议,都会有很大帮助。给定XSLT 3的一种方法可能是将这些路径转换为XSLT 3匹配模板,然后创建一个可以使用transform
函数()执行的样式表:
/响应/有效载荷/根/车辆[2]/强度=999
/响应/有效负载/根/自行车[1]/型号=2019
/响应/Headers/server=WebSphere
/响应/标题/内容类型=文本
/响应/有效载荷/根/车辆[2]/容量=555
/响应/有效载荷/根/车辆[1]/型号=mmm1
/响应/有效负载/根/自行车[1]/company=xyz
/响应/有效载荷/根/车辆[1]/公司=ccc1
/响应/标题/状态代码=400
我得到了想要的结果
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<map key="Response">
<map key="Headers">
<string key="server">WebSphere</string>
<string key="Status-Code">400</string>
<string key="Content-Type">text</string>
</map>
<map key="Payload">
<map key="root">
<array key="cars">
<map>
<string key="company">ccc1</string>
<string key="model">mmm1</string>
</map>
<map>
<string key="strength">999</string>
<string key="Capacity">555</string>
</map>
</array>
<array key="bikes">
<map>
<string key="company">xyz</string>
<string key="model">2019</string>
</map>
</array>
</map>
</map>
</map>
</map>
WebSphere
400
文本
ccc1
mmm1
999
555
xyz
2019
这样,尽管我不得不将路径(包括自行车调整为自行车[1]
再次感谢Martin。感谢您的支持。您的解决方案非常有效。:)