当前位置: 首页 > 知识库问答 >
问题:

XSLT将CDATA转换为文本

曾山
2023-03-14

谈到XSLT,我是一个完全的新手,所以我很难找到解决问题的方法。

我有以下来自PeopleSoft的XML:

<?xml version="1.0"?>
<document>
  <ConnectedQuery>
    <Employee key="3000862">
      <Empl_ID>
        <![CDATA[12345678]]>
      </Empl_ID>
      <Name>
        <![CDATA[John Doe]]>
      </Name>
      <Job key="12345678,0,2018-09-17,0">
        <Empl_ID>
          <![CDATA[12345678]]>
        </Empl_ID>
        <Empl_Record>0</Empl_Record>
        <Effective_Date>2018-09-17</Effective_Date>
        <Effective_Sequence>0</Effective_Sequence>
      </Job>
    </Employee>
  </ConnectedQuery>
</document>

PeopleSoft"有益地"将所有文本数据放入CDATA部分,我想删除CDATA,并将字符串放在正常的文本节点中:

<?xml version="1.0"?>
<document>
  <ConnectedQuery>
    <Employee key="3000862">
      <Empl_ID>12345678</Empl_ID>
      <Name>John Doe</Name>
      <Job key="12345678,0,2018-09-17,0">
        <Empl_ID>12345678</Empl_ID>
        <Empl_Record>0</Empl_Record>
        <Effective_Date>2018-09-17</Effective_Date>
        <Effective_Sequence>0</Effective_Sequence>
      </Job>
    </Employee>
  </ConnectedQuery>
</document> 

有人能在我需要创建我想要的输出的XSLT上给我一个正确的方向吗?非常感谢提前

共有1个答案

侯向文
2023-03-14

只要运行identity transform,它就会将CDATA转换为普通字符串

<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>

请参见https://xsltfiddle.liberty-development.net/bFWR5E1转换

 类似资料:
  • 最近我一直在使用Altova Map Force构建XSL转换,我遇到了一个问题。为了创建一个有效的XML输出文件(从一个输入文本文件创建,该文件非常简单),它需要包含一些xmlns属性标记。 不幸的是,我无法在Map Force或我的数据转换工具(由基于Saxon的客户机构建)中找到有效的方法(修改了输出xsd模式定义和属性强制)。因此,我的解决方案是将生成的XML解析到另一个(最终)转换器中,

  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输

  • 我想将xml文件格式转换为另一种格式;使用XSL1.0或2.0版。 http://www.w3.org/1999/xsl/transform“version=”1.0“> 这段代码是从“struct”节点的“members”属性中提取相关ID的起点,以后只用于发出“field”节点。 xslt处理器需要解析Struct节点的'members'属性。“members”属性是字段ID的列表。 在上面的

  • 问题内容: 我有一个奇怪的要求,我需要获取一些xml并重新编写它,以便将文本节点包装在CDATA中(这是用于不允许正常转义的客户端的)。 似乎所有普通的XML库dom4j,jdom,java xml都没有对此的内置支持。有任何想法吗?我可以为此使用XSLT吗? 我不太清楚。我将从这里开始: 我需要做的是将其转换为: -戴夫 问题答案: 只要a)您需要输出的所有文本都在元素中,b)您只关心文本节点,

  • 我有以下问题。我不是XSLT方面最伟大的专家,我想成功的是将一个XML从赛贝斯转换为以下内容: Sybase的输出: 我希望它的输出标题保持原样,条目部分不同 这是到目前为止我的XSLT(对不起,不太可能) 也许,有人可以帮我实现我想要的。非常感谢你。

  • 问题内容: 我有大量文本字符串,这些字符串显然是PDF文件的原始数据,我需要将其重新制作为PDF。 目前,我正在将字符串读取到StringBuffer中,但是如果需要,可以更改它。从那里,我尝试将其写到文件中并更改扩展名(我真的希望这样做能起作用,但是我有点不知道),我尝试将其带入String,然后从中取出byte []。并将其写入文件,或使用DataOutputStream将字节放入文件中。这些