使用此代碼,我可以洗掉此 xml 元素的一個節點 (field_without_interest)。但我現在想洗掉兩個節點(field_without_interest 和 PERSON_NUMBER)。我試圖將 for 回圈放置在不同的位置(您可以在代碼中看到這一點。但我認為在 stackoverflow 中撰寫每個嘗試都沒有用)但無濟于事。
SELECT XMLQUERY(
'copy $NEWHTML := .
modify (
for $i in $NEWHTML/ROWSET/ROW/field_without_interest
--for $j in $NEWHTML/ROWSET/ROW/PERSON_NUMBER
return delete node $i--, node $j
)
return $NEWHTML'
PASSING xmltype(
'<?xml version="1.0"?>
<ROWSET>
<ROW>
<PERSON_NUMBER>1000142</PERSON_NUMBER>
<LOAN_1>25000</LOAN_1>
<field_without_interest>f</field_without_interest>
</ROW>
<ROW>
<PERSON_NUMBER>1000142</PERSON_NUMBER>
<LOAN_1>25000</LOAN_1>
</ROW>
</ROWSET>'
)
RETURNING CONTENT
).getStringVal() AS interested_elements
FROM DUAL
代碼
uj5u.com熱心網友回復:
您可以在子句中指定路徑替代modify項以選擇要洗掉的節點:
SELECT XMLQUERY( 'copy $NEWHTML := . modify ( delete nodes $NEWHTML/ROWSET/ROW/*[ self::field_without_interest or self::PERSON_NUMBER ] ) return $NEWHTML' PASSING xmltype( '<?xml version="1.0"?> <ROWSET> <ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> <field_without_interest>f</field_without_interest> </ROW> <ROW> <PERSON_NUMBER>1000142</PERSON_NUMBER> <LOAN_1>25000</LOAN_1> </ROW> </ROWSET>' ) RETURNING CONTENT ).getStringVal() AS interested_elements FROM DUAL| 有興趣的元素 | | :------------------------------------------------ -------------------------------------------------- ---- | | <?xml version="1.0"?><ROWSET><ROW><LOAN_1>25000</LOAN_1></ROW><ROW><LOAN_1>25000</LOAN_1></ROW></ROWSET> |
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478819.html
