如何说服groovy.xml.MarkupBuilder创建一个名为';使用';
SVG定义了一个名为如何说服groovy.xml.MarkupBuilder创建一个名为';使用';,xml,groovy,markupbuilder,Xml,Groovy,Markupbuilder,SVG定义了一个名为use的元素,我正在尝试使用groovy.xml.MarkupBuilder生成一个SVG文件,该文件利用了这个标记: 然而,use在groovy中也是一个关键字。我如何正确地转义它?不确定这些方法是否正式,但它们如何工作: v1: defxml=newgroovy.xml.MarkupBuilder() xml.svg{ 蔑视{ g(id:“形状”){ 矩形(x:50,y:50,宽度:50,高度:50) 圆圈(cx:50,cy:50,r:50) } } createNod
use
的元素,我正在尝试使用groovy.xml.MarkupBuilder
生成一个SVG文件,该文件利用了这个标记:
然而,
use
在groovy中也是一个关键字。我如何正确地转义它?不确定这些方法是否正式,但它们如何工作:
v1:
defxml=newgroovy.xml.MarkupBuilder()
xml.svg{
蔑视{
g(id:“形状”){
矩形(x:50,y:50,宽度:50,高度:50)
圆圈(cx:50,cy:50,r:50)
}
}
createNode('use',[“xlink:href”:“#shape”,x:50,y:50])
//嵌套元素可能在这里
nodeCompleted('svg','use')
}
v2:
defxml=newgroovy.xml.MarkupBuilder()
xml.svg{
蔑视{
g(id:“形状”){
矩形(x:50,y:50,宽度:50,高度:50)
圆圈(cx:50,cy:50,r:50)
}
}
doInvokeMethod('use','use',[[“xlink:href:“#shape”,x:50,y:50],{
/*嵌套元素可能在此处*/
} ])
}
v3:
我们可以重新定义负责进行名称映射或检查转义规则的getName
方法
@groovy.transform.CompileStatic
类MyMarkupBuilder扩展了groovy.xml.MarkupBuilder{
def getName(字符串名称){
if(name.startsWith(“”)返回name.substring(2)
返回名称
}
}
def xml=new MyMarkupBuilder()
xml.svg{
蔑视{
g(id:“形状”){
矩形(x:50,y:50,宽度:50,高度:50)
圆圈(cx:50,cy:50,r:50)
}
}
__使用(“xlink:href”:“#shape”,x:50,y:50)
}
不确定这些方法是官方的,但它们是有效的:
v1:
defxml=newgroovy.xml.MarkupBuilder()
xml.svg{
蔑视{
g(id:“形状”){
矩形(x:50,y:50,宽度:50,高度:50)
圆圈(cx:50,cy:50,r:50)
}
}
createNode('use',[“xlink:href”:“#shape”,x:50,y:50])
//嵌套元素可能在这里
nodeCompleted('svg','use')
}
v2:
defxml=newgroovy.xml.MarkupBuilder()
xml.svg{
蔑视{
g(id:“形状”){
矩形(x:50,y:50,宽度:50,高度:50)
圆圈(cx:50,cy:50,r:50)
}
}
doInvokeMethod('use','use',[[“xlink:href:“#shape”,x:50,y:50],{
/*嵌套元素可能在此处*/
} ])
}
v3:
我们可以重新定义负责进行名称映射或检查转义规则的getName
方法
@groovy.transform.CompileStatic
类MyMarkupBuilder扩展了groovy.xml.MarkupBuilder{
def getName(字符串名称){
if(name.startsWith(“”)返回name.substring(2)
返回名称
}
}
def xml=new MyMarkupBuilder()
xml.svg{
蔑视{
g(id:“形状”){
矩形(x:50,y:50,宽度:50,高度:50)
圆圈(cx:50,cy:50,r:50)
}
}
__使用(“xlink:href”:“#shape”,x:50,y:50)
}
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.svg {
defs {
g(id:"shape") {
rect(x:50, y:50, width:50, height:50)
circle(cx:50, cy:50, r:50)
}
}
use("xlink:href":"#shape", x:50, y:50")
}