Я пытался сделать некоторые модификации xml с XML Slurper groovy.Groovy Xml Анализ с пространством имен
В принципе, я просматриваю xml и ищут теги или атрибуты, которые есть? как значение, а затем заменить его на некоторое значение.
У меня есть работа для xml, у которой нет пространств имен, но как только я включаю их, все становится неуклюжим. Например, это:
String foo = "<xs:test xmlns:xs="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:foo="http://myschema/xmlschema" name='?'>
<foo:tag1>?</foo:tag1>
<foo:tag2>?</foo:tag2>
</xs:test>";
производит:
<Envelope/>
Вот заводной код, я использую. Это появляется на работу, когда я не использую пространство имен:
public def populateRequest(xmlString, params) {
def slurper = new XmlSlurper().parseText(xmlString)
//replace all tags with ?
def tagsToReplace = slurper.depthFirst().findAll{ foundTag ->
foundTag.text() == "?"
}.each { foundTag ->
foundTag.text = {webServiceOperation.parameters[foundTag.name()]}
foundTag.replaceNode{
"${foundTag.name()}"(webServiceOperation.parameters[foundTag.name()])
}
}
//replace all attributes with ?
def attributesToReplace = slurper.list().each{
it.attributes().each{ attributes ->
if(attributes.value == '?')
{
attributes.value = webServiceOperation.parameters[attributes.key]
}
}
}
new StreamingMarkupBuilder().bind { mkp.yield slurper }.toString()
}
Спасибо, я увидел, что в документации, но вопрос с тем, что я бегом через кратному XML-строки, которые я не содержим. Они могут иметь или не иметь пространства имен, и у них разные теги. Что я могу найти элементы просто отлично, он терпит неудачу, когда я пытаюсь его обновить. – eric
Я думаю, первая проблема заключается в том, что вы код только получает корневой узел, поэтому вы видите только в качестве ответа –