![](/img/trans.png)
[英]How to display multiple elements in a new line from XML file using XQuery in Java?
[英]xquery function to remove new line from xml element
**當我嘗試使用 xquery 映射為元素“x”分配一個大字符串值時,它正在創建一個新行。相反,我希望它沒有新行。 **
<ABC> <X> 86E95A47AD2037B203521BBE7DAC71A11FE2DBD539D21CF66A9024B30505090F52F687F5BB299BD21A25E2ED01079A009B25FCFB7DCCBAF1DAB16E78B8CE179A922B94957989DBF531F967E46ACFB1B474A6F4CFD6AFB8C61D5BBB62346C502F837A68A15CD12ED90C03371EFB8C9922FB6B7860 </X> <Y>70406352</Y> </ABC>
要求
<ABC> <X>86E95A47AD2037B203521BBE7DAC71A11FE2DBD539D21CF66A9024B30505090F52F687F5BB299BD21A25E2ED01079A009B25FCFB7DCCBAF1DAB16E78B8CE179A922B94957989DBF531F967E46ACFB1B474A6F4CFD6AFB8C61D5BBB62346C502F837A68A15CD12ED90C03371EFB8C9922FB6B7860</X> <Y>70406352</Y> </ABC>
您可以通過遞歸類型開關 function 運行它,對X
元素進行特殊處理以在text()
) 上進行normalize-space()
) (或任何其他更具體的前導回車替換:
專門針對X
元素及其text()
:
declare function local:filter($nodes){
for $node in $nodes
return
typeswitch ($node)
case text() return $node
case attribute() return $node
case comment() return $node
case processing-instruction() return $node
case element (X) return element {name($node)} {( $node/@*, $node/node() except $node/text(), $node/text()/normalize-space())}
default return element {name($node)} {($node/@*, local:filter($node/node()))}
};
或者更一般地說,所有text()
節點的normalize-space()
:
declare function local:filter($nodes){
for $node in $nodes
return
typeswitch ($node)
case text() return normalize-space($node)
case attribute() return $node
case comment() return $node
case processing-instruction() return $node
default return element {name($node)} {($node/@*, local:filter($node/node()))}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.