⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 starttag.java

📁 该源码是一个J2ME项目
💻 JAVA
字号:
package org.kxml.parser;

import java.util.*;

import org.kxml.*;

/** A class for events indicating the start of a new element */

public class StartTag
      extends Tag
{

  Vector attributes;
  boolean degenerated;
  PrefixMap prefixMap;

  /** creates a new StartTag. The attributes are not copied and may
    be reused in e.g. the DOM. So DO NOT CHANGE the attribute
    vector after handing over, the effects are undefined */

  public StartTag(StartTag parent, String namespace,
                  String name, Vector attributes,
                  boolean degenerated, boolean processNamespaces)
  {

    super(Xml.START_TAG, parent, namespace, name);

    this.attributes = (attributes == null || attributes.size() == 0)
                      ? null
                      : attributes;

    this.degenerated = degenerated;

    prefixMap = parent == null ? PrefixMap.DEFAULT : parent.prefixMap;

    if (!processNamespaces)
    {
      return;
    }

    boolean any = false;

    for (int i = getAttributeCount() - 1; i >= 0; i--)
    {
      Attribute attr = (Attribute) attributes.elementAt(i);
      String attrName = attr.getName();
      int cut = attrName.indexOf(':');
      String prefix;

      if (cut != -1)
      {
        prefix = attrName.substring(0, cut);
        attrName = attrName.substring(cut + 1);
      }
      else if (attrName.equals("xmlns"))
      {
        prefix = attrName;
        attrName = "";
      }
      else
      {
        continue;
      }

      if (!prefix.equals("xmlns"))
      {
        if (!prefix.equals("xml"))
        {
          any = true;
        }
      }
      else
      {
        prefixMap = new PrefixMap(prefixMap, attrName, attr.getValue());

        //System.out.println (prefixMap);
        attributes.removeElementAt(i);
      }
    }

    int len = getAttributeCount();

    if (any)
    {
      for (int i = 0; i < len; i++)
      {
        Attribute attr = (Attribute) attributes.elementAt(i);
        String attrName = attr.getName();
        int cut = attrName.indexOf(':');

        if (cut == 0)
        {
          throw new RuntimeException
                ("illegal attribute name: " + attrName + " at " + this);
        }

        else if (cut != -1)
        {
          String attrPrefix = attrName.substring(0, cut);
          if (!attrPrefix.equals("xml"))
          {
            attrName = attrName.substring(cut + 1);

            String attrNs = prefixMap.getNamespace(attrPrefix);

            if (attrNs == null)
            {
              throw new RuntimeException
                    ("Undefined Prefix: " + attrPrefix + " in " + this);
            }

            attributes.setElementAt
                  (new Attribute(attrNs,
                                 attrName, attr.getValue()), i);
          }
        }
      }
    }

    int cut = name.indexOf(':');

    String prefix;
    if (cut == -1)
    {
      prefix = "";
    }
    else if (cut == 0)
    {
      throw new RuntimeException
            ("illegal tag name: " + name + " at " + this);
    }
    else
    {
      prefix = name.substring(0, cut);
      this.name = name.substring(cut + 1);
    }

    this.namespace = prefixMap.getNamespace(prefix);

    if (this.namespace == null)
    {
      if (prefix.length() != 0)
      {
        throw new RuntimeException
              ("undefined prefix: " + prefix + " in " + prefixMap + " at " + this);
      }
      this.namespace = Xml.NO_NAMESPACE;
    }
  }

  /** returns the attribute vector. May return null for no attributes. */

  public Vector getAttributes()
  {
    return attributes;
  }

  public boolean getDegenerated()
  {
    return degenerated;
  }

  public PrefixMap getPrefixMap()
  {
    return prefixMap;
  }

  /** Simplified (!) toString method for debugging
    purposes only. In order to actually write valid XML,
      please use a XmlWriter. */

  public String toString()
  {
    return "StartTag <" + name + "> line: " + lineNumber + " attr: " +
          attributes;
  }

  public void setPrefixMap(PrefixMap map)
  {
    this.prefixMap = map;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -