我正在尝试格式化一条消息,其中<json:boolean name="isRecordSuccess">true</json:boolean>
我希望消除该节点并仅获取<json:boolean name="isRecordSuccess">false</json:boolean>
Sample Message:
<?xml version="1.0" encoding="UTF-8"?>
<json:object xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx">
<json:array name="results">
<json:object>
<json:string name="RecordNumber"/>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">PONumber__c not specified</json:string>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052774</json:string>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">Work order's Product or Warehouse cannot be changed.</json:string>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052775</json:string>
<json:boolean name="isRecordSuccess">true</json:boolean>
<json:string name="errorDescription"/>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052983</json:string>
<json:boolean name="isRecordSuccess">true</json:boolean>
<json:string name="errorDescription"/>
</json:object>
<json:object>
<json:string name="RecordNumber"/>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">PONumber__c not specified</json:string>
</json:object>
</json:array>
<json:boolean name="isSuccess">false</json:boolean>
</json:object>
期望的输出:
<?xml version="1.0" encoding="UTF-8"?>
<json:object xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx">
<json:array name="results">
<json:object>
<json:string name="RecordNumber"/>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">PONumber__c not specified</json:string>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052774</json:string>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">Work order's Product or Warehouse cannot be changed.</json:string>
</json:object>
<json:object>
<json:string name="RecordNumber"/>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">PONumber__c not specified</json:string>
</json:object>
</json:array>
<json:boolean name="isSuccess">false</json:boolean>
</json:object>
这是链接 Code
代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/json:object/json:array/json:object/json:boolean[normalize-space(.) = 'true']">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
提供此输出
<?xml version="1.0" encoding="UTF-8"?>
<json:object xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx"
xsi:schemaLocation="http://www.datapower.com/schemas/json jsonx.xsd">
<json:array name="results">
<json:object>
<json:string name="RecordNumber"/>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">PONumber__c not specified</json:string>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052774</json:string>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">Work order's Product or Warehouse cannot be changed.</json:string>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052775</json:string>true<json:string name="errorDescription"/>
</json:object>
<json:object>
<json:string name="RecordNumber">000100052983</json:string>true<json:string name="errorDescription"/>
</json:object>
<json:object>
<json:string name="RecordNumber"/>
<json:boolean name="isRecordSuccess">false</json:boolean>
<json:string name="errorDescription">PONumber__c not specified</json:string>
</json:object>
</json:array>
<json:boolean name="isSuccess">false</json:boolean>
</json:object>
答案 0 :(得分:2)
怎么样:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="json:object[json:boolean[@name='isRecordSuccess']='true']"/>
</xsl:stylesheet>
这将删除具有子json:object
的任何json:boolean
,其中(a)@name
属性等于“isRecordSuccess”,(b)文本值等于“true”。< / p>