类 XmlElement

java.lang.Object
net.apexes.commons.xml.XmlElement
直接已知子类:
Xml

public class XmlElement extends Object
XmlElement is a representation of an XML object. The object is able to parse XML code.
版本:
$Name: RELEASE_2_2_1 $, $Revision: 1.5 $
作者:
Marc De Scheemaecker <cyberelf@mac.com>
  • 构造器详细资料

    • XmlElement

      public XmlElement()
      Creates and initializes a new XML element. Calling the construction is equivalent to:
        new XmlElement(new Hashtable(), false, true)
      Postconditions:
      • countChildren() => 0
      • enumerateChildren() => empty enumeration
      • enumeratePropertyNames() => empty enumeration
      • getChildren() => empty vector
      • getContent() => ""
      • getLineNr() => 0
      • getName() => null
    • XmlElement

      public XmlElement(Map<String,char[]> entities)
      Creates and initializes a new XML element. Calling the construction is equivalent to:
        new XmlElement(entities, false, true)
      参数:
      entities - The entity conversion table.
      Preconditions:
      • entities != null
      Postconditions:
      • countChildren() => 0
      • enumerateChildren() => empty enumeration
      • enumeratePropertyNames() => empty enumeration
      • getChildren() => empty vector
      • getContent() => ""
      • getLineNr() => 0
      • getName() => null
    • XmlElement

      public XmlElement(boolean skipLeadingWhitespace)
      Creates and initializes a new XML element. Calling the construction is equivalent to:
        new XmlElement(new Hashtable(), skipLeadingWhitespace, true)
      参数:
      skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
      Postconditions:
      • countChildren() => 0
      • enumerateChildren() => empty enumeration
      • enumeratePropertyNames() => empty enumeration
      • getChildren() => empty vector
      • getContent() => ""
      • getLineNr() => 0
      • getName() => null
    • XmlElement

      public XmlElement(Map<String,char[]> entities, boolean skipLeadingWhitespace)
      Creates and initializes a new XML element. Calling the construction is equivalent to:
        new XmlElement(entities, skipLeadingWhitespace, true)
      参数:
      entities - The entity conversion table.
      skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
      Preconditions:
      • entities != null
      Postconditions:
      • countChildren() => 0
      • enumerateChildren() => empty enumeration
      • enumeratePropertyNames() => empty enumeration
      • getChildren() => empty vector
      • getContent() => ""
      • getLineNr() => 0
      • getName() => null
    • XmlElement

      protected XmlElement(Map<String,char[]> entities, boolean skipLeadingWhitespace, boolean fillBasicConversionTable)
      Creates and initializes a new XML element.

      This constructor should only be called from createAnotherElement to create child elements.

      参数:
      entities - The entity conversion table.
      skipLeadingWhitespace - true if leading and trailing whitespace in PCDATA content has to be removed.
      fillBasicConversionTable - true if the basic entities need to be added to the entity list.
      Preconditions:
      • entities != null
      • if fillBasicConversionTable == false then entities contains at least the following entries: amp, lt, gt, apos and quot
      Postconditions:
      • countChildren() => 0
      • enumerateChildren() => empty enumeration
      • enumeratePropertyNames() => empty enumeration
      • getChildren() => empty vector
      • getContent() => ""
      • getLineNr() => 0
      • getName() => null
  • 方法详细资料

    • isIgnoreWhitespace

      public boolean isIgnoreWhitespace()
      返回:
      true if the leading and trailing whitespace of #PCDATA sections have to be ignored.
    • addChild

      public void addChild(XmlElement child)
      Adds a child element.
      参数:
      child - The child element to add.
      Preconditions:
      • child != null
      • child.getName() != null
      • child does not have a parent element
      Postconditions:
      • countChildren() => old.countChildren() + 1
      • enumerateChildren() => old.enumerateChildren() + child
      • getChildren() => old.enumerateChildren() + child
    • removeChild

      public void removeChild(XmlElement child)
      Removes a child element.
      参数:
      child - The child element to remove.
      Preconditions:
      • child != null
      • child is a child element of the receiver
      Postconditions:
      • countChildren() => old.countChildren() - 1
      • enumerateChildren() => old.enumerateChildren() - child
      • getChildren() => old.enumerateChildren() - child
    • getName

      public String getName()
      Returns the name of the element.
    • setName

      public void setName(String name)
      Changes the name of the element.
      参数:
      name - The new name.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getParent

      public XmlElement getParent()
      Returns the parent of the element.
      返回:
    • setParent

      protected void setParent(XmlElement parent)
      参数:
      parent -
    • getChildrenCount

      public int getChildrenCount()
      Returns the number of child elements of the element.
      Postconditions:
      • result >= 0
    • getChild

      public XmlElement getChild(int index)
      参数:
      index -
      返回:
    • getChild

      public XmlElement getChild(String name)
      参数:
      name -
      返回:
    • getChildContent

      public String getChildContent(String name)
      参数:
      name -
      返回:
    • getChildren

      public List<XmlElement> getChildren()
      Returns the child elements as a List.
      Postconditions:
      • result != null
    • getChildren

      public List<XmlElement> getChildren(String name)
      参数:
      name -
      返回:
    • getLineNr

      public int getLineNr()
      Returns the line nr in the source data on which the element is found. This method returns 0 there is no associated source data.
      Postconditions:
      • result >= 0
    • getContent

      public String getContent()
      Returns the PCDATA content of the object. If there is no such content, null is returned.
    • setContent

      public void setContent(String content)
      Changes the content string.
      参数:
      content - The new content string.
    • setAttribute

      public void setAttribute(String name, Object value)
      Adds or modifies an attribute.
      参数:
      name - The name of the attribute.
      value - The value of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
      • value != null
      Postconditions:
      • enumerateAttributeNames() => old.enumerateAttributeNames() + name
      • getAttribute(name) => value
    • removeAttribute

      public void removeAttribute(String name)
      Removes an attribute.
      参数:
      name - The name of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
      Postconditions:
      • enumerateAttributeNames() => old.enumerateAttributeNames() - name
      • getAttribute(name) => null
    • getAttributeNames

      public Set<String> getAttributeNames()
      Get the attribute names.
      Postconditions:
      • result != null
    • hasAttribute

      public boolean hasAttribute(String name)
      Returns true if this element contains a attribute for the specified name.
      参数:
      name -
      返回:
    • getAttribute

      public Object getAttribute(String name)
      Returns an attribute of the element. If the attribute doesn't exist, null is returned.
      参数:
      name - The name of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getAttribute

      public Object getAttribute(String name, Object defaultValue)
      Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
      参数:
      name - The name of the attribute.
      defaultValue - Key to use if the attribute is missing.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getIntAttribute

      public int getIntAttribute(String name)
      Returns an attribute of the element. If the attribute doesn't exist, 0 is returned.
      参数:
      name - The name of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getIntAttribute

      public int getIntAttribute(String name, int defaultValue)
      Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
      参数:
      name - The name of the attribute.
      defaultValue - Key to use if the attribute is missing.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • setIntAttribute

      public void setIntAttribute(String name, int value)
      Adds or modifies an attribute.
      参数:
      name - The name of the attribute.
      value - The value of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
      Postconditions:
      • enumerateAttributeNames() => old.enumerateAttributeNames() + name
      • getIntAttribute(name) => value
    • getLongAttribute

      public long getLongAttribute(String name)
      Returns an attribute of the element. If the attribute doesn't exist, 0 is returned.
      参数:
      name - The name of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getLongAttribute

      public long getLongAttribute(String name, long defaultValue)
      Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
      参数:
      name - The name of the attribute.
      defaultValue - Key to use if the attribute is missing.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • setLongAttribute

      public void setLongAttribute(String name, long value)
      Adds or modifies an attribute.
      参数:
      name - The name of the attribute.
      value - The value of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
      Postconditions:
      • enumerateAttributeNames() => old.enumerateAttributeNames() + name
      • getIntAttribute(name) => value
    • getStringAttribute

      public String getStringAttribute(String name)
      Returns an attribute of the element. If the attribute doesn't exist, null is returned.
      参数:
      name - The name of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getStringAttribute

      public String getStringAttribute(String name, String defaultValue)
      Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
      参数:
      name - The name of the attribute.
      defaultValue - Key to use if the attribute is missing.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getDoubleAttribute

      public double getDoubleAttribute(String name)
      Returns an attribute of the element. If the attribute doesn't exist, 0.0 is returned.
      参数:
      name - The name of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • getDoubleAttribute

      public double getDoubleAttribute(String name, double defaultValue)
      Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned.
      参数:
      name - The name of the attribute.
      defaultValue - Key to use if the attribute is missing.
      Preconditions:
      • name != null
      • name is a valid XML identifier
    • setDoubleAttribute

      public void setDoubleAttribute(String name, double value)
      Adds or modifies an attribute.
      参数:
      name - The name of the attribute.
      value - The value of the attribute.
      Preconditions:
      • name != null
      • name is a valid XML identifier
      Postconditions:
      • enumerateAttributeNames() => old.enumerateAttributeNames() + name
      • getDoubleAttribute(name) => value
    • getBooleanAttribute

      public boolean getBooleanAttribute(String name, String trueValue, String falseValue, boolean defaultValue)
      Returns an attribute of the element. If the attribute doesn't exist, defaultValue is returned. If the value of the attribute is equal to trueValue, true is returned. If the value of the attribute is equal to falseValue, false is returned. If the value doesn't match trueValue or falseValue, an exception is thrown.
      参数:
      name - The name of the attribute.
      trueValue - The value associated with true.
      falseValue - The value associated with true.
      defaultValue - Value to use if the attribute is missing.
      Preconditions:
      • name != null
      • name is a valid XML identifier
      • trueValue and falseValue are different strings.
    • parseFromReader

      public void parseFromReader(Reader reader) throws IOException, XmlParseException
      Reads one XML element from a java.io.Reader and parses it.
      参数:
      reader - The reader from which to retrieve the XML data.
      Preconditions:
      • reader != null
      • reader is not closed
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      • the reader points to the first character following the last '>' character of the XML element
      抛出:
      IOException - If an error occured while reading the input.
      XmlParseException - If an error occured while parsing the read data.
    • parseFromReader

      public void parseFromReader(Reader reader, int startingLineNr) throws IOException, XmlParseException
      Reads one XML element from a java.io.Reader and parses it.
      参数:
      reader - The reader from which to retrieve the XML data.
      startingLineNr - The line number of the first line in the data.
      Preconditions:
      • reader != null
      • reader is not closed
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      • the reader points to the first character following the last '>' character of the XML element
      抛出:
      IOException - If an error occured while reading the input.
      XmlParseException - If an error occured while parsing the read data.
    • parseString

      public void parseString(String string) throws XmlParseException
      Reads one XML element from a String and parses it.
      参数:
      string - The reader from which to retrieve the XML data.
      Preconditions:
      • string != null
      • string.length() > 0
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      抛出:
      XmlParseException - If an error occured while parsing the string.
    • parseString

      public void parseString(String string, int offset) throws XmlParseException
      Reads one XML element from a String and parses it.
      参数:
      string - The reader from which to retrieve the XML data.
      offset - The first character in string to scan.
      Preconditions:
      • string != null
      • offset < string.length()
      • offset >= 0
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      抛出:
      XmlParseException - If an error occured while parsing the string.
    • parseString

      public void parseString(String string, int offset, int end) throws XmlParseException
      Reads one XML element from a String and parses it.
      参数:
      string - The reader from which to retrieve the XML data.
      offset - The first character in string to scan.
      end - The character where to stop scanning. This character is not scanned.
      Preconditions:
      • string != null
      • end <= string.length()
      • offset < end
      • offset >= 0
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      抛出:
      XmlParseException - If an error occured while parsing the string.
    • parseString

      public void parseString(String string, int offset, int end, int startingLineNr) throws XmlParseException
      Reads one XML element from a String and parses it.
      参数:
      string - The reader from which to retrieve the XML data.
      offset - The first character in string to scan.
      end - The character where to stop scanning. This character is not scanned.
      startingLineNr - The line number of the first line in the data.
      Preconditions:
      • string != null
      • end <= string.length()
      • offset < end
      • offset >= 0
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      抛出:
      XmlParseException - If an error occured while parsing the string.
    • parseCharArray

      public void parseCharArray(char[] input, int offset, int end) throws XmlParseException
      Reads one XML element from a char array and parses it.
      参数:
      input - The reader from which to retrieve the XML data.
      offset - The first character in string to scan.
      end - The character where to stop scanning. This character is not scanned.
      Preconditions:
      • input != null
      • end <= input.length
      • offset < end
      • offset >= 0
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      抛出:
      XmlParseException - If an error occured while parsing the string.
    • parseCharArray

      public void parseCharArray(char[] input, int offset, int end, int startingLineNr) throws XmlParseException
      Reads one XML element from a char array and parses it.
      参数:
      input - The reader from which to retrieve the XML data.
      offset - The first character in string to scan.
      end - The character where to stop scanning. This character is not scanned.
      startingLineNr - The line number of the first line in the data.
      Preconditions:
      • input != null
      • end <= input.length
      • offset < end
      • offset >= 0
      Postconditions:
      • the state of the receiver is updated to reflect the XML element parsed from the reader
      抛出:
      XmlParseException - If an error occured while parsing the string.
    • write

      public void write(Writer writer) throws IOException
      Writes the XML element to a writer.
      参数:
      writer - The writer to write the XML data to.
      Preconditions:
      • writer != null
      • writer is not closed
      抛出:
      IOException - If the data could not be written to the writer.
      另请参阅:
    • write

      public void write(Writer writer, boolean standalone, int indent) throws IOException
      Writes the XML element to a writer.
      参数:
      writer - The writer to write the XML data to.
      standalone - If true then element on a separate line.
      indent - How many spaces to indent the element.
      Preconditions:
      • writer != null
      • writer is not closed
      抛出:
      IOException - If the data could not be written to the writer.
      另请参阅:
    • write

      public void write(Writer writer, int indent) throws IOException
      Writes the XML element to a writer.
      参数:
      writer - The writer to write the XML data to.
      indent - How many spaces to indent the element.
      Preconditions:
      • writer != null
      • writer is not closed
      抛出:
      IOException - If the data could not be written to the writer.
      另请参阅:
    • write

      protected static void write(Writer writer, XmlElement element, boolean standalone, int indent, int level) throws IOException
      Writes the XML element to a writer.
      参数:
      writer - The writer to write the XML data to.
      standalone -
      indent - How many spaces to indent the element.
      Preconditions:
      • writer != null
      • writer is not closed
      抛出:
      IOException - If the data could not be written to the writer.
      另请参阅:
    • writeEncoded

      protected static void writeEncoded(Writer writer, String str) throws IOException
      Writes a string encoded to a writer.
      参数:
      writer - The writer to write the XML data to.
      str - The string to write encoded.
      Preconditions:
      • writer != null
      • writer is not closed
      • str != null
      抛出:
      IOException
    • toCompactString

      public String toCompactString()
    • toString

      public String toString()
      Writes the XML element to a string.
      覆盖:
      toString 在类中 Object
      另请参阅:
    • createAnotherElement

      protected XmlElement createAnotherElement()
      Creates a new similar XML element.

      You should override this method when subclassing XmlElement.

    • scanIdentifier

      protected void scanIdentifier(StringBuilder result) throws IOException
      Scans an identifier from the current reader. The scanned identifier is appended to result.
      参数:
      result - The buffer in which the scanned identifier will be put.
      Preconditions:
      • result != null
      • The next character read from the reader is a valid first character of an XML identifier.
      Postconditions:
      • The next character read from the reader won't be an identifier character.
      抛出:
      IOException
    • scanWhitespace

      protected char scanWhitespace() throws IOException
      This method scans an identifier from the current reader.
      返回:
      the next character following the whitespace.
      抛出:
      IOException
    • scanWhitespace

      protected char scanWhitespace(StringBuilder buf) throws IOException
      This method scans an identifier from the current reader. The scanned whitespace is appended to result.
      返回:
      the next character following the whitespace.
      Preconditions:
      • result != null
      抛出:
      IOException
    • scanString

      protected void scanString(StringBuilder buf) throws IOException
      This method scans a delimited string from the current reader. The scanned string without delimiters is appended to string.
      Preconditions:
      • string != null
      • the next char read is the string delimiter
      抛出:
      IOException
    • scanPCData

      protected boolean scanPCData(StringBuilder buf) throws IOException
      Scans a #PCDATA element. CDATA sections and entities are resolved. The next < char is skipped. The scanned data is appended to data.
      Preconditions:
      • data != null
      抛出:
      IOException
    • checkCDATA

      protected boolean checkCDATA(StringBuilder buf) throws IOException
      Scans a special tag and if the tag is a CDATA section, append its content to buf.
      Preconditions:
      • buf != null
      • The first < has already been read.
      抛出:
      IOException
    • skipComment

      protected void skipComment() throws IOException
      Skips a comment.
      Preconditions:
      • The first <!-- has already been read.
      抛出:
      IOException
    • skipSpecialTag

      protected void skipSpecialTag(int bracketLevel) throws IOException
      Skips a special tag or comment.
      参数:
      bracketLevel - The number of open square brackets ([) that have already been read.
      Preconditions:
      • The first <! has already been read.
      • bracketLevel >= 0
      抛出:
      IOException
    • checkLiteral

      protected boolean checkLiteral(String literal) throws IOException
      Scans the data for literal text. Scanning stops when a character does not match or after the complete text has been checked, whichever comes first.
      参数:
      literal - the literal to check.
      Preconditions:
      • literal != null
      抛出:
      IOException
    • readChar

      protected char readChar() throws IOException
      Reads a character from a reader.
      抛出:
      IOException
    • scanElement

      protected void scanElement(XmlElement elt) throws IOException
      Scans an XML element.
      参数:
      elt - The element that will contain the result.
      Preconditions:
      • The first < has already been read.
      • elt != null
      抛出:
      IOException
    • resolveEntity

      protected void resolveEntity(StringBuilder buf) throws IOException
      Resolves an entity. The name of the entity is read from the reader. The value of the entity is appended to buf.
      参数:
      buf - Where to put the entity value.
      Preconditions:
      • The first & has already been read.
      • buf != null
      抛出:
      IOException
    • unreadChar

      protected void unreadChar(char ch)
      Pushes a character back to the read-back buffer.
      参数:
      ch - The character to push back.
      Preconditions:
      • The read-back buffer is empty.
      • ch != '\0'
    • invalidValueSet

      protected XmlParseException invalidValueSet(String name)
      Creates a parse exception for when an invalid valueset is given to a method.
      参数:
      name - The name of the entity.
      Preconditions:
      • name != null
    • invalidValue

      protected XmlParseException invalidValue(String name, String value)
      Creates a parse exception for when an invalid value is given to a method.
      参数:
      name - The name of the entity.
      value - The value of the entity.
      Preconditions:
      • name != null
      • value != null
    • unexpectedEndOfData

      protected XmlParseException unexpectedEndOfData()
      Creates a parse exception for when the end of the data input has been reached.
    • syntaxError

      protected XmlParseException syntaxError(String context)
      Creates a parse exception for when a syntax error occured.
      参数:
      context - The context in which the error occured.
      Preconditions:
      • context != null
      • context.length() > 0
    • expectedInput

      protected XmlParseException expectedInput(String charSet)
      Creates a parse exception for when the next character read is not the character that was expected.
      参数:
      charSet - The set of characters (in human readable form) that was expected.
      Preconditions:
      • charSet != null
      • charSet.length() > 0
    • unknownEntity

      protected XmlParseException unknownEntity(String name)
      Creates a parse exception for when an entity could not be resolved.
      参数:
      name - The name of the entity.
      Preconditions:
      • name != null
      • name.length() > 0