如何根据XML树中某个嵌套元素的特定值完全删除父元素?
我有一点复杂的XML,在这里,我正在努力有条件地从XML中删除某些元素如何根据XML树中某个嵌套元素的特定值完全删除父元素?,xml,xslt,xpath,Xml,Xslt,Xpath,我有一点复杂的XML,在这里,我正在努力有条件地从XML中删除某些元素 <hl7:message xmlns:hl7="http://wso2.org/hl7"><ORU_R01 xmlns="urn:hl7-org:v2xml"> <ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI> <ORU_R01.ORCOBRNTEOBXNTECTI> <ORU_R01.OBXNTE>
<hl7:message xmlns:hl7="http://wso2.org/hl7"><ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>2</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>9</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>8</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC/>
1.
i_tsleo
2.
英尺
矿井
1.
纳米
i_tsleo
9
英尺
矿井
8.
英尺
矿井
有点长的XML。我想将所有包含OBX/OBX.3/CE.3/
的ORU_R01.OBXNTE
删除为PIT
。请注意,ORU_R01.OBXNTE
是文档中的重复元素。
我尝试了一些身份转换的方法,但是没有成功。试试这个:
输入XML:
<hl7:message xmlns:hl7="http://wso2.org/hl7">
<ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>2</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>9</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>8</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC/>
</ORU_R01>
</hl7:message>
1.
i_tsleo
2.
英尺
矿井
1.
纳米
i_tsleo
9
英尺
矿井
8.
英尺
矿井
XSLT:
输出XML:
<?xml version="1.0" encoding="utf-8"?>
<hl7:message xmlns:hl7="http://wso2.org/hl7">
<ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE />
</ORU_R01.OBXNTE>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE />
</ORU_R01.OBXNTE>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC />
</ORU_R01>
</hl7:message>
1.
i_tsleo
1.
纳米
i_tsleo
还有一件事,如何从
中删除“xmlns”属性?有什么捷径吗?@AashishP,你能单独问一个问题吗?谢谢你的帮助@Kirill Polishchuk
<?xml version="1.0" encoding="utf-8"?>
<hl7:message xmlns:hl7="http://wso2.org/hl7">
<ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE />
</ORU_R01.OBXNTE>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE />
</ORU_R01.OBXNTE>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC />
</ORU_R01>
</hl7:message>