如何使用 XSLT 转换来转换 Soap 对象数据

2023-12-27

我必须使用 XSLT 转换来转换以下结果。

<?xml version='1.0' encoding='UTF-8'?>
   <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
    <ns2:Response xmlns:ns2="http://urldata.com/">
        <return>{"accountstatus":false,"response":{"MessageData":"Test","Code":"99","errors":{"name":"Hi","code":"100"}}}</return>
    </ns2:Response>
</S:Body></S:Envelope>

我尝试使用下面

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" encoding="utf-8" indent="yes" omit-declaration="yes"/>
    <xsl:template match="/">
        <ns1:TranResponse xmlns:ns1="http://test.com">
            <ns1:TranResult>
                <xsl:element name="ns1:AccountStatus">
                    <xsl:value-of select="//jsonObject/return"/>
                </xsl:element>
            </ns1:TranResult>
        </ns1:TranResponse>
    </xsl:template>
</xsl:stylesheet>
       
And Result Like This
<ns1:ResultSet>
     <ns1:AccountStatus>{"accountstatus":false,"response":{"MessageData":"Test","Code":"99",
     "errors":{"name":"Hi","code":"100"}}}</ns1:AccountStatus>
<ns1:ResultSet>

但我需要的是如下结果,

 <ns1:Results>
   <ns1:ResultSet>
     <ns1:AccountStatus>false</ns1:AccountStatus>
   <ns1:ResultSet/>
   <ns1:ResultSet>
    <ns1:MessageData>test</ns1:MessageData>
   <ns1:ResultSet/> 
   <ns1:ResultSet>
    <ns1:Code>99</ns1:Code> 
   <ns1:ResultSet/> 
   <ns1:ResultSet>
    <ns1:name>Hi</ns1:name>
   <ns1:ResultSet/> 
   <ns1:ResultSet>
    <ns1:code>100</ns1:Code> 
   <ns1:ResultSet/>
<ns1:Results/>

任何人都可以解决这个问题请解决这个问题


如果您只能使用 XSL 3.0,那没问题。只需将 JSON 解析为 XML 即可:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:math="http://www.w3.org/2005/xpath-functions/math"
    xmlns:map="http://www.w3.org/2005/xpath-functions/map"
    xmlns:array="http://www.w3.org/2005/xpath-functions/array"
    exclude-result-prefixes="#all"
    version="3.0">


  <xsl:output version="1.0" encoding="UTF-8" omit-xml-declaration="yes" indent="true"/>

    <xsl:variable name="data" select="//return => json-to-xml()"></xsl:variable>
    
    <xsl:template match="/" xpath-default-namespace="http://www.w3.org/2005/xpath-functions">
        <ns1:root xmlns:ns1="http://urldata.com/ns1">
            <ns1:MessageData>
                <xsl:value-of select="$data//boolean[@key = 'accountstatus']"/>
            </ns1:MessageData>
            <ns1:Code>
                <xsl:value-of select="$data//map[@key = 'response']/string[@key = 'Code']"/>
            </ns1:Code>
            <!--- use this approach for everything you want to select ... -->
        </ns1:root>
    </xsl:template>
</xsl:stylesheet>

See Fiddle https://xsltfiddle.liberty-development.net/aiyneU.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 XSLT 转换来转换 Soap 对象数据 的相关文章

  • 使用 XSLT(即 XML Transformer)时防止 DTD 下载

    我必须在 Java 中处理具有 DTD 和 XSLT 的 XML 文件 DTD 确实是必要的 因为它包含我使用的实体的定义 旁白 是的 将实体用于可以使用 unicode 的东西是一个坏主意 当我运行转换时 它每次都会从外部源下载 DTD
  • 间接变量/参数引用(另一个属性/另一个变量中的名称)

    是否可以使用 XSL 访问名称存储在另一个变量 或参数 中的变量 或参数 如果没有 为什么 我是 xsl 的新手 来自其他语言 可以使用此功能 例如 bash ant 也许我在寻找这个问题的答案时就错了 但既然我在SO上没有找到它 我想应该
  • 如何让 XSLT 在 Java 中返回 UTF-8

    我正在尝试让我的 XSL 脚本使用 UTF 8 编码 像 和希腊字符这样的字符就像垃圾一样出现 让它工作的唯一方法是将结果写入文件 如果我将它写入输出流 它只会返回垃圾 System out 有效 但这可能是因为它被重定向到文件 结果需要从
  • XSL。评估表达

    对不起我的英语不好 XSL 1 0 如何从元素或属性值计算表达式 例如 XML
  • XSLT 分组/合并子项(使用密钥)

    我试图了解如何使用我已经编写的代码推导出解决方案 为了简化起见 我将首先解释我想要做什么以及到目前为止我得到了什么 假设我在 XSLT 中有一个 XML 变量 其中包含几个具有相同标题属性的节点 Using Dimitre Novatche
  • XSLT key() 查找

    我正在尝试 XSLT 中的查找表示例 但无法使其工作
  • XSLT;将转义文本解析为节点集并提取子元素

    我一整天都在与这个问题作斗争 几乎束手无策 我有一个 XML 文件 其中数据的某些部分存储为转义文本 但它们本身是格式良好的 XML 我想将此文本节点中的整个层次结构转换为节点集并提取其中的数据 我能想到的变量和函数的组合都不起作用 我期望
  • 在 XSL 中测试 xs:decimal 的正确方法是什么?

    我试图根据传入的数据显示不同的信息 如果它是整数 我想只显示数字 如果它是小数 我想使用 0 00 模式 是的 我知道 有点混乱 但这就是开发规范 gt 对于这个特定部分 我有以下 XSL 但我无法看到 xsl when 错误消息 预期的表
  • 如何使用 XSLT 排列节点层次结构?

    首先 我是一个完全的初学者XSLT 在一个项目中 我们正在以更抽象的方式综合树转换 为了概念证明 我试图将域扩展到简单的XSLT 但让我们看一个例子 我的 XML 文档中有几页 如下所示
  • Saxon XSLT 转换:转换期间失败时如何关闭输出流

    我想对多个输出文件进行 XSLT 转换 我在那里使用了 xsl 结果文档 当转换失败时 应删除所有输出文件 但是 如果由 xsl result document 创建的文档生成失败 我的程序将无法再删除该文档 我认为原因是 xsl resu
  • 使用 xslt 将 xml 转换为 xsl-fo 时动态创建超链接?

    我想使用 xsl 文件在 PDF 报告中创建标题 如果源文件包含超链接 则应将其呈现为超链接 否则呈现为纯文本 例如 我的 xml 如下所示 a href http google com target blank This is the h
  • 如何替换 XSLT 1 中的多个文本子字符串

    对于 XSLT 1 0 XSLT 2 0 的正则表达式方法通常不可用 是否有任何非正则表达式方法可以替换源 xml 文档中节点中的多个字段 例如转换
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • XPath:通过当前节点属性选择当前和下一个节点的文本

    首先 这是从我之前的问题 https stackoverflow com questions 5202187 xpath select current and next nodes text by current node attribut
  • 如何在 xslt 2.0 中获取与此场景相关的特定 XML 元素索引?

    我想使用 XSLT2 0 将一个 xml 转换为另一个 xml 在这样做时 我想找到一些与我在此处解释的场景相关的 XML 元素索引 这是 XML 文档
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • Xml、xsl Javascript 排序

    我正在寻找一种使用 javascript 对 xml 数据进行排序的方法 并希望最终过滤掉数据 我知道这一切都可以在 xsl 文件中实现 但我想在客户端进行 我已经搜索了多个使用 javascript 进行排序的地方 但其中大部分要么太特定
  • 使用 XSLT 的两列表

    这是我正在处理的 XML 数据的一部分
  • XML 和 XSLT:需要它仅对某些子节点进行排序

    我需要让 XSLT 样式表对 XML 文件的子节点进行排序 但仅限某些子节点 下面是 XML 的示例
  • JDK 6 中是否支持 XSLT 2.0?

    JDK 6 是否支持 XSLT 2 0 进行转换 我的问题是 它是否附带为 XSLT 2 0 构建的 XSLT 处理器 或者我需要去其他图书馆 比如撒克逊人 不 它不会 无论如何默认情况下不会 正如你所建议的 你需要使用Saxon http

随机推荐