120 lines
2.6 KiB
Java
Executable File
120 lines
2.6 KiB
Java
Executable File
package org.moparscape.xml.impl;
|
|
|
|
import org.codehaus.plexus.util.xml.XmlStreamReader;
|
|
import org.codehaus.plexus.util.xml.Xpp3Dom;
|
|
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
|
|
import org.codehaus.plexus.util.xml.Xpp3DomWriter;
|
|
|
|
import java.io.*;
|
|
|
|
public class Xpp3XmlElement extends AbstractXmlElement {
|
|
|
|
private final Xpp3Dom internal;
|
|
|
|
public Xpp3XmlElement() {
|
|
internal = null;
|
|
}
|
|
|
|
public Xpp3XmlElement(String name, Xpp3Dom parent) {
|
|
internal = new Xpp3Dom(name);
|
|
if(parent != null)
|
|
parent.addChild(internal);
|
|
}
|
|
|
|
private Xpp3XmlElement(Xpp3Dom internal) {
|
|
this.internal = internal;
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return internal.getName();
|
|
}
|
|
|
|
@Override
|
|
public String getValue() {
|
|
return internal.getValue();
|
|
}
|
|
|
|
@Override
|
|
public String getAttribute(String name) {
|
|
return internal.getAttribute(name);
|
|
}
|
|
|
|
@Override
|
|
public String[] getAttributeNames() {
|
|
return internal.getAttributeNames();
|
|
}
|
|
|
|
@Override
|
|
public XmlElement getParent() {
|
|
return wrapParent(internal.getParent());
|
|
}
|
|
|
|
@Override
|
|
public int getChildCount() {
|
|
return internal.getChildCount();
|
|
}
|
|
|
|
@Override
|
|
public XmlElement[] getChildren(String name){
|
|
return wrapArray(name == null ? internal.getChildren() : internal.getChildren(name));
|
|
}
|
|
|
|
@Override
|
|
public XmlElement getChild(String name) {
|
|
return new Xpp3XmlElement(internal.getChild(name));
|
|
}
|
|
|
|
@Override
|
|
public XmlElement getNewChildXmlElement(String name){
|
|
return new Xpp3XmlElement(name, internal);
|
|
}
|
|
|
|
@Override
|
|
public XmlElement addChild(XmlElement other) {
|
|
if (other instanceof Xpp3XmlElement)
|
|
internal.addChild(((Xpp3XmlElement) other).internal);
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public XmlElement setAttribute(String name, String value) {
|
|
internal.setAttribute(name, value);
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public XmlElement setValue(String value) {
|
|
internal.setValue(value);
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public XmlElement readFromStream(InputStream is) throws Exception {
|
|
return new Xpp3XmlElement(Xpp3DomBuilder.build(new XmlStreamReader(is)));
|
|
}
|
|
|
|
@Override
|
|
public void writeToStream(OutputStream os) throws IOException {
|
|
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
|
|
writeHeader(osw, true);
|
|
|
|
Xpp3DomWriter.write(osw, internal);
|
|
osw.close();
|
|
os.close();
|
|
}
|
|
|
|
@Override
|
|
protected Object getInternal() {
|
|
return this.internal;
|
|
}
|
|
|
|
@Override
|
|
protected XmlElement wrapObject(Object internal) {
|
|
if(internal instanceof Xpp3Dom)
|
|
return new Xpp3XmlElement((Xpp3Dom)internal);
|
|
return null;
|
|
}
|
|
|
|
}
|