Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据XML树中某个嵌套元素的特定值完全删除父元素?_Xml_Xslt_Xpath - Fatal编程技术网

如何根据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>

我有一点复杂的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>
            <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>