
com.sta.cts.XMLNameSpace Maven / Gradle / Ivy
package com.sta.cts;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Hashtable;
import com.sta.mlogger.MLogger;
/**
* Name: XMLNameSpace
* Description: Darstellung der Hierarchie aus NameSpaces und NameSpace-Namen
* beim Parsen einer XML-Struktur und Verwendung des XML-Scanners.
*
* Comment: ...
*
* Copyright: Copyright (c) 2014, 2016, 2017, 2019, 2021
* Company: >StA-Soft<
* @author StA
* @version 1.0
*/
public class XMLNameSpace implements Serializable
{
/**
* Die serialVersionUID.
*/
static final long serialVersionUID = 1813524552145780369L;
//===========================================================================
/**
* ?bergeordneter NameSpace, oder null.
*/
private XMLNameSpace myParentXMLNameSpace;
/**
* Standard-NameSpace, falls vorhanden.
*/
private String myStdNameSpace;
/**
* Mapping NameSpace-Name auf NameSpace.
*/
private Hashtable myNameSpaceName2NameSpaceHT;
/**
* Mapping NameSpace auf NameSpace-Name.
*/
private Hashtable myNameSpace2NameSpaceNameHT;
//===========================================================================
/**
* Standard-Constructor.
*/
public XMLNameSpace()
{
}
/**
* Constructor mit ?bergeordnetem NameSpace.
* @param parent ?bergeordneter NameSpace
*/
public XMLNameSpace(XMLNameSpace parent)
{
myParentXMLNameSpace = parent;
}
//===========================================================================
/**
* ?bergeordneten NameSpace vorgeben.
* @param parent ?bergeordneter NameSpace
*/
public void setParent(XMLNameSpace parent)
{
myParentXMLNameSpace = parent;
}
/**
* ?bergeordneten NameSpace ermitteln.
* @return ?bergeordneter NameSpace
*/
public XMLNameSpace getParent()
{
return myParentXMLNameSpace;
}
/**
* Standard-NameSpace vorgeben.
* @param pStdNameSpace Standard-NameSpace
*/
public void setStdNameSpace(String pStdNameSpace)
{
myStdNameSpace = pStdNameSpace;
}
/**
* Standard-NameSpace ermitteln.
* @return Standard-NameSpace
*/
public String getStdNameSpace()
{
return myStdNameSpace != null ? myStdNameSpace : myParentXMLNameSpace != null ? myParentXMLNameSpace.getStdNameSpace() : null;
}
/**
* NameSpace zu einem NameSpace-Namen ermitteln. Wird der NameSpace nicht
* gefunden, wird (falls vorhanden) im Parent-NameSpace gesucht.
* @param pNameSpaceName NameSpace-Name
* @return NameSpace, falls gefunden, sonst null
*/
public String getNameSpace(String pNameSpaceName)
{
String ns = myNameSpaceName2NameSpaceHT != null ? myNameSpaceName2NameSpaceHT.get(pNameSpaceName) : null;
return ns != null ? ns : myParentXMLNameSpace != null ? myParentXMLNameSpace.getNameSpace(pNameSpaceName) : null;
}
/**
* NameSpace-Name zu einem NameSpace ermitteln. Wird der NameSpace-Name nicht
* gefunden, wird (falls vorhanden) im Parent-NameSpace gesucht.
* @param pNameSpace NameSpace
* @return NameSpace-Name, falls gefunden, sonst null
*/
public String getNameSpaceName(String pNameSpace)
{
String nsn = myNameSpace2NameSpaceNameHT != null ? myNameSpace2NameSpaceNameHT.get(pNameSpace) : null;
return nsn != null ? nsn : myParentXMLNameSpace != null ? myParentXMLNameSpace.getNameSpaceName(pNameSpace) : null;
}
/**
* NameSpace-Name mit NameSpace hinzuf?gen
* Gleiche Funktion wie addNameSpace.
* @param pNameSpaceName NameSpace-Name (falls null: Standard-NameSpace setzen)
* @param pNameSpace NameSpace
*/
public void addNameSpaceName(String pNameSpaceName, String pNameSpace)
{
if (pNameSpaceName == null)
{
myStdNameSpace = pNameSpace;
}
else
{
if (myNameSpaceName2NameSpaceHT == null)
{
myNameSpaceName2NameSpaceHT = new Hashtable();
}
if (myNameSpace2NameSpaceNameHT == null)
{
myNameSpace2NameSpaceNameHT = new Hashtable();
}
myNameSpaceName2NameSpaceHT.put(pNameSpaceName, pNameSpace);
myNameSpace2NameSpaceNameHT.put(pNameSpace, pNameSpaceName);
}
}
/**
* NameSpace-Name mit NameSpace hinzuf?gen.
* Gleiche Funktion wie addNameSpaceName.
* @param pNameSpaceName NameSpace-Name (falls null: Standard-NameSpace setzen)
* @param pNameSpace NameSpace
*/
public void addNameSpace(String pNameSpaceName, String pNameSpace)
{
addNameSpaceName(pNameSpaceName, pNameSpace);
}
/**
* NameSpace anhand des NameSpace-Namen entfernen.
* @param pNameSpaceName NameSpace-Name
*/
public void removeNameSpaceName(String pNameSpaceName)
{
if (myNameSpaceName2NameSpaceHT != null)
{
String ns = myNameSpaceName2NameSpaceHT.remove(pNameSpaceName);
/*
if (myNameSpaceName2NameSpaceHT.size() == 0)
{
myNameSpaceName2NameSpaceHT = null;
}
*/
if (myNameSpace2NameSpaceNameHT != null)
{
myNameSpace2NameSpaceNameHT.remove(ns);
/*
if (myNameSpace2NameSpaceNameHT.size() == 0)
{
myNameSpace2NameSpaceNameHT = null;
}
*/
}
}
}
/**
* NameSpace anhand des NameSpace selbst entfernen.
* @param pNameSpace NameSpace
*/
public void removeNameSpace(String pNameSpace)
{
if (myNameSpace2NameSpaceNameHT != null)
{
String nsn = myNameSpace2NameSpaceNameHT.remove(pNameSpace);
/*
if (myNameSpace2NameSpaceNameHT.size() == 0)
{
myNameSpace2NameSpaceNameHT = null;
}
*/
if (myNameSpaceName2NameSpaceHT != null)
{
myNameSpaceName2NameSpaceHT.remove(nsn);
/*
if (myNameSpaceName2NameSpaceHT.size() == 0)
{
myNameSpaceName2NameSpaceHT = null;
}
*/
}
}
}
/**
* String-Darstellung in String-Buffer einf?gen.
* @param sb String-Buffer
* @param indent Einr?ckung, zu Beginn 0
*/
public void toString(StringBuilder sb, int indent)
{
String spaces = MLogger.indent(indent);
sb.append(spaces + "NameSpace...\n");
if (myStdNameSpace != null)
{
sb.append(spaces + " StdNameSpace: " + myStdNameSpace + "\n");
}
if (myNameSpaceName2NameSpaceHT != null)
{
Enumeration names = myNameSpaceName2NameSpaceHT.keys();
while (names.hasMoreElements())
{
String name = names.nextElement();
String value = myNameSpaceName2NameSpaceHT.get(name);
sb.append(spaces + " " + name + " = " + value + "\n");
}
}
if (myParentXMLNameSpace != null)
{
myParentXMLNameSpace.toString(sb, indent + 1);
}
sb.append(spaces + "NameSpace: Ok.\n");
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
toString(sb, 0);
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy