2016-06-17 1 views
0

Как удалить узел xml на основе данных внутри.Удалите несколько узлов xml с таким же именем (но не все)

Например, если в ниже я хотел удалить только эти два

 <MMGroupID>143</MMGroupID> 
    <MMGroupID>70</MMGroupID> 

<Promotion> 
<LastUpdated>2012-08-03T12:15:24+01:00</LastUpdated> 
<MajorVersion>1</MajorVersion> 
<MinorVersion>7</MinorVersion> 
<MultibuyGroup> 
    <XMLSchemaVersion>1</XMLSchemaVersion> 
    <UseLowestNetValue>0</UseLowestNetValue> 
    <MMGroupID>975</MMGroupID> 
    <MMGroupID>41</MMGroupID> 
    <MMGroupID>143</MMGroupID> 
    <MMGroupID>70</MMGroupID> 
    <MMGroupID>36</MMGroupID> 
    <MMGroupID>22</MMGroupID> 
    <MMGroupID>870</MMGroupID> 
    <MMGroupID>90</MMGroupID> 
    <MMGroupID>88</MMGroupID> 
    <MMGroupID>142</MMGroupID> 
    <MMGroupID>147</MMGroupID> 
    <TriggerOnLostSales>0</TriggerOnLostSales> 
</MultibuyGroup> 

ответ

0

Вы можете использовать deleteXML() с XPath, которая определяет значения узлов, которые вы хотите:

deleteXml(<your_xml>, q'{//MMGroupID[text()='143' or text()='70']}') 

Демонстрация:

select XMLSerialize(document 
    deleteXML(XMLType(
'<Promotion> 
<LastUpdated>2012-08-03T12:15:24+01:00</LastUpdated> 
<MajorVersion>1</MajorVersion> 
<MinorVersion>7</MinorVersion> 
<MultibuyGroup> 
    <XMLSchemaVersion>1</XMLSchemaVersion> 
    <UseLowestNetValue>0</UseLowestNetValue> 
    <MMGroupID>975</MMGroupID> 
    <MMGroupID>41</MMGroupID> 
    <MMGroupID>143</MMGroupID> 
    <MMGroupID>70</MMGroupID> 
    <MMGroupID>36</MMGroupID> 
    <MMGroupID>22</MMGroupID> 
    <MMGroupID>870</MMGroupID> 
    <MMGroupID>90</MMGroupID> 
    <MMGroupID>88</MMGroupID> 
    <MMGroupID>142</MMGroupID> 
    <MMGroupID>147</MMGroupID> 
    <TriggerOnLostSales>0</TriggerOnLostSales> 
</MultibuyGroup> 
</Promotion>'), 
    q'{//MMGroupID[text()='143' or text()='70']}') 
    as CLOB INDENT size = 2) 
from dual; 

, который производит:

XMLSERIALIZE(DOCUMENTDELETEXML(XMLTYPE('<PROMOTION><LASTUPDATED>2012-08-03T12:15 
-------------------------------------------------------------------------------- 
<Promotion> 
    <LastUpdated>2012-08-03T12:15:24+01:00</LastUpdated> 
    <MajorVersion>1</MajorVersion> 
    <MinorVersion>7</MinorVersion> 
    <MultibuyGroup> 
    <XMLSchemaVersion>1</XMLSchemaVersion> 
    <UseLowestNetValue>0</UseLowestNetValue> 
    <MMGroupID>975</MMGroupID> 
    <MMGroupID>41</MMGroupID> 
    <MMGroupID>36</MMGroupID> 
    <MMGroupID>22</MMGroupID> 
    <MMGroupID>870</MMGroupID> 
    <MMGroupID>90</MMGroupID> 
    <MMGroupID>88</MMGroupID> 
    <MMGroupID>142</MMGroupID> 
    <MMGroupID>147</MMGroupID> 
    <TriggerOnLostSales>0</TriggerOnLostSales> 
    </MultibuyGroup> 
</Promotion> 
Смежные вопросы