package ee.sk.digidoc.c14n; import ee.sk.digidoc.c14n.FragmentBase; import ee.sk.digidoc.c14n.TinyXMLParser_Attribute; import ee.sk.digidoc.c14n.TinyXMLParser_Element; import ee.sk.digidoc.c14n.TinyXMLParser_Fragment; import java.util.ArrayList; public final class TinyXMLParser_Tag { public TinyXMLParser_Fragment Begin; public TinyXMLParser_Fragment End; public ArrayList Attributes; public TinyXMLParser_Tag() { } public String get_Name() { return this.get_NameFragment().get_DataString(); } public TinyXMLParser_Fragment get_NameFragment() { return TinyXMLParser_Element.TagNameOf(this.Begin.get_Next()); } public String get_DataString() { return FragmentBase.GetDataBetweenFragments(this.Begin, this.End); } public boolean get_CanHaveAttributes() { if (this.Begin.get_Item("<")) { return true; } if (this.Begin.get_Item("<?")) { return true; } return false; } public static TinyXMLParser_Tag Of(TinyXMLParser_Fragment f) { TinyXMLParser_Tag n; boolean seek; TinyXMLParser_Attribute a; n = new TinyXMLParser_Tag(); n.Begin = f; n.End = f.get_Next(); seek = true; if (!(n.End == null)) { if (f.get_Item("<")) { n.End = n.End.get_Next(); n.Attributes = new ArrayList(); while (seek) { if (n.End.get_IsLiteral()) { a = TinyXMLParser_Attribute.Of(n.End); if (!(a == null)) { n.End = a.ValueEnd.get_Next(); n.Attributes.add(a); continue; } } else { if (n.End.get_Item(">")) { seek = false; } else { if (n.End.get_Item("/>")) { seek = false; } else { if ((n.End.get_Next() == null)) { seek = false; } } } } if (seek) { n.End = n.End.get_Next(); } } } else { if (f.get_Item("</")) { while (seek) { if (n.End.get_Item(">")) { seek = false; } else { if ((n.End.get_Next() == null)) { seek = false; } else { n.End = n.End.get_Next(); } } } } else { if (f.get_Item("<?")) { n.Attributes = new ArrayList(); while (seek) { if (n.End.get_IsLiteral()) { a = TinyXMLParser_Attribute.Of(n.End); if (!(a == null)) { n.End = a.ValueEnd.get_Next(); n.Attributes.add(a); continue; } } if (n.End.get_Item("?>")) { seek = false; } else { if ((n.End.get_Next() == null)) { seek = false; } else { n.End = n.End.get_Next(); } } } } else { if (f.get_Item("<!--")) { while (seek) { if (n.End.get_Item("-->")) { seek = false; } else { if ((n.End.get_Next() == null)) { seek = false; } else { n.End = n.End.get_Next(); } } } } else { n = null; } } } } } return n; } }