こんな XML文書があったときに <?xml-stylesheet href="style.xsl" type="text/xsl"?>
に
該当する内容に JDOM でアクセスするにはどうしたらいいの?という話。
<?xml version="1.0"?>
<?xml-stylesheet href="style.xsl" type="text/xsl"?>
<html>
<body><h1>hello</h1></body>
</html>
@Grab(group='org.jdom', module='jdom', version='2.0.2')
import org.jdom2.*
import org.jdom2.input.*
xmldata='''<?xml version="1.0"?>
<?xml-stylesheet href="style.xsl" type="text/xsl"?>
<html>
<body><h1>hello jdom</h1></body></html>
'''
def doc = new SAXBuilder().build( new StringReader(xmldata) )
println doc.getContent()
@Grab(group='org.jdom', module='jdom', version='2.0.2')
import org.jdom2.*
import org.jdom2.input.*
xmldata='''<?xml version="1.0"?>
<?xml-stylesheet href="style.xsl" type="text/xsl"?>
<html>
<body><h1>hello jdom</h1></body></html>
'''
recur = { def obj , int indent ->
println ' '*indent + obj.toString().replaceAll('\n','')
if( obj instanceof Parent ){
obj.content.each{
recur(it , indent+1 )
}
}
}
def doc = new SAXBuilder().build( new StringReader(xmldata) )
recur(doc,0)
実行結果はこれです。
[Document: No DOCTYPE declaration, Root is [Element: <html/>]]
[ProcessingInstruction: <?xml-stylesheet href="style.xsl" type="text/xsl"?>]
[Element: <html/>]
[Text: ]
[Element: <body/>]
[Text: ]
[Element: <h1/>]
[Text: hello jdom]
[Text: ]
[Text: ]
JDOM 便利ですね。