All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.zakgof.tools.xml.Xml Maven / Gradle / Ivy

package com.zakgof.tools.xml;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;

public class Xml {
  private final String name;
  private String value;
  private final List children = new ArrayList<>();
  private Xml parent;
  private final Map params = new LinkedHashMap<>();

  public Xml() {
    this.name = null;
  }

  public Xml append(Xml tag) {
    children.add(tag);
    return this;
  }

  public Xml append(Stream tags) {
    children.addAll(tags.collect(Collectors.toList()));
    return this;
  }

  public Xml p(String key, String value) {
    params.put(key, value);
    return this;
  }

  public Xml done() {
    return parent;
  }

  public Xml v(String value) {
    this.value = value;
    return this;
  }

  public Xml(Xml parent, String name) {
    this.parent = parent;
    this.name = name;
  }

  public Xml tag(String name) {
    Xml t = new Xml(this, name);
    this.append(t);
    return t;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    if (name != null) {
      sb.append("<").append(name);
      Stream.of(params.entrySet()).forEach(e -> {
        sb.append(" ").append(e.getKey()).append("=\"").append(e.getValue()).append("\"");
      });
      sb.append(">");
    }
    if (value != null)
      sb.append(value);
    children.forEach(ch -> sb.append(ch.toString()));
    if (name != null) {
      sb.append("");
    }
    return sb.toString();
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy