1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-09-09 09:09:38 +02:00

Improve how XmlStringBuilder handles enclosing XML environments

to avoid emitting unnecessary attributes like xmlns.

Also add a test for MediaElement that checks that <uri/> does not
carry a xmlns attribute.
This commit is contained in:
Florian Schmaus 2019-09-04 09:48:02 +02:00
parent 935465a11b
commit dd4df0a5ef
3 changed files with 55 additions and 5 deletions

View file

@ -56,9 +56,17 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element {
halfOpenElement(e.getElementName());
}
public XmlStringBuilder(FullyQualifiedElement ee, XmlEnvironment enclosingXmlEnvironment) {
this(enclosingXmlEnvironment);
prelude(ee);
public XmlStringBuilder(FullyQualifiedElement element, XmlEnvironment enclosingXmlEnvironment) {
sb = new LazyStringBuilder();
halfOpenElement(element);
if (enclosingXmlEnvironment != null
&& !enclosingXmlEnvironment.effectiveNamespaceEquals(element.getNamespace())) {
xmlnsAttribute(element.getNamespace());
}
effectiveXmlEnvironment = XmlEnvironment.builder()
.withNamespace(element.getNamespace())
.withNext(enclosingXmlEnvironment)
.build();
}
public XmlStringBuilder escapedElement(String name, String escapedContent) {
@ -492,7 +500,7 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element {
}
public XmlStringBuilder append(Collection<? extends Element> elements) {
return append(elements, null);
return append(elements, effectiveXmlEnvironment);
}
public XmlStringBuilder append(Collection<? extends Element> elements, XmlEnvironment enclosingXmlEnvironment) {