我想使用xslt转换一些xml文件,但遇到了一个大问题。
在我的输入文件中,我有CDATA标记,它包含xml子树-S,应该复制到输出标记中。我们知道关于这些CDATA标记的一些信息:
<ns1:myOperation xmlns:ns1="http://mynamespace/">
<SUBXML1>
<![CDATA[<metaData><value>value1</value></metaData><metaData><value>value2</value></metaData><notMetaData><notValue>value3</notValue></notMetaData>]]>
</SUBXML1>
</ns1:myOperation>
我的xsl如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="http://mynamespace/">
<xsl:output method="xml" version="1.0" encoding="UTF-8"
indent="yes" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:apply-templates select="ns1:myOperation" />
</xsl:template>
<xsl:template match="ns1:myOperation">
<ns1:myOperation>
<xsl:apply-templates select="SUBXML1" />
</ns1:myOperation>
</xsl:template>
<xsl:template match="SUBXML1">
<xsl:element name="one">
<xsl:element name="metaData">
<xsl:value-of
select="substring-before(substring-after(.,'metaData>'), '</metaData')" disable-output-escaping="yes" />
</xsl:element>
</xsl:element>
<xsl:element name="all">
<xsl:element name="allSUBXML1">
<xsl:value-of
select="." disable-output-escaping="yes" />
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
这样做的输出将是:
<ns1:myOperation xmlns:ns1="http://mynamespace/">
<one>
<metaData>
<value>value1</value>
</metaData>
</one>
<all>
<allSUBXML1 />
</all>
</ns1:myOperation>
注意:如果您在eclipse中测试这个示例,它可以工作(
谢谢你,塔马斯
您对使用XSLT是死心塌地的吗?我认为,您可以使用ESQL中的parse as bitstream子句轻松地完成这一任务。
当前输出: 所需的输出是(将提取的内容从CDATA中取出): 我也尝试了“text()”匹配模式,但它不起作用,我阅读了不同的答案并尝试了它们的方法: 我需要使用XSLT1.0。 感谢您的帮助,并向您致意
我得到xml格式的响应,数据在xml节点的cData部分内。现在当我试图提取节点值,然后用cdata文本获取值。 我如何解析它? xml: 我使用代码来获取整个列表,但我只需要获取特定的节点 上面的代码列出了所有的cdata值... 我只需要从上面的xml中获取dbid、isdb、mydb值
我正在尝试使用 xsl 转换转换第三方 xml,然后使用 JAXB 将生成的 xml 转换为 java 对象。但是,在两者之间的一些标记为 CDATA 的元素内容会丢失。 下面是我的第三方xml示例 XSL转换 Java 类 翻译 但是上面的代码将inputXml输出为]] 任何建议都将不胜感激。
我有一个xml文档(输入文件不能更改),我需要用xsl转换到另一个xml。输入xsl有一个CDATA,如以下示例结构所示: 预期结果如下: 我的Xslt看起来像: 问题是xslt无法识别CDATA中的标记。如何为每个应用某种禁用输出转义?或者其他方法来解决这个问题?
假设我有一个XML文件,如: 我想读取xslt转换器中的CDATA元素“name”,并将其值放在标记值的某个位置。我该怎么做?抱歉,我们不能对CDATA的内容使用xpath。是否有一些破解/解决方法?我希望在XSLT中严格执行此操作。
我正在尝试编写一个时髦的脚本来更新 SoapUI 请求的某些 CDATA 部分。 我对SoapUI和groovy都是新手。 我已经成功地通过使用属性转移完成了我需要的事情,但是,由于我需要在几乎所有测试用例中执行相同的处理,因此我宁愿在可以从任何需要的地方调用的脚本中执行此操作。 我试图模仿groovy中的属性转移步骤,但是没有成功,因为我似乎无法访问和解析CDATA部分。 任何关于如何使用gro