Xsemmel/Editor/XParser.cs
/// <summary>
/// Liefert den Namen des Elements beim offset
/// </summary>
/// <param name="xml"></param>
/// <param name="offset"></param>
/// <returns></returns>
Liefert den Namen des Elements beim offset
Liefert den Namen des Elements beim offset
public static string GetElementAtCursor(string xml, int offset)
        {
            if (offset == xml.Length)
            {
                offset--;
            }
            int startIdx = xml.LastIndexOf('<', offset);
            if (startIdx < 0) return null;
            if (startIdx < xml.Length && xml[startIdx + 1] == '/')
            {
                startIdx = startIdx + 1;
            }
            int endIdx1 = xml.IndexOf(' ', startIdx);
            if (endIdx1 == -1 ) endIdx1 = int.MaxValue;
            int endIdx2 = xml.IndexOf('>', startIdx);
            if (endIdx2 == -1 )
            {
                endIdx2 = int.MaxValue;
            }
            else
            {
                if (endIdx2 < xml.Length && xml[endIdx2 - 1] == '/')
                {
                    endIdx2 = endIdx2 - 1;
                }
            }
            int endIdx = Math.Min(endIdx1, endIdx2);
            if (endIdx2 > 0 && endIdx2 < int.MaxValue && endIdx > startIdx)
            {
                return xml.Substring(startIdx + 1, endIdx - startIdx - 1);
            }
            else
            {
                return null;
            }
        }
public static string GetElementAtCursor ( string xml , int offset ) { if ( offset == xml . Length ) { offset -- ; } int startIdx = xml . LastIndexOf ( ' ' , offset ) ; if ( startIdx < 0 ) return null ; if ( startIdx < xml . Length && xml [ startIdx + 1 ] == ' ' ) { startIdx = startIdx + 1 ; } int endIdx1 = xml . IndexOf ( ' ' , startIdx ) ; if ( endIdx1 == - 1 ) endIdx1 = int . MaxValue ; int endIdx2 = xml . IndexOf ( ' ' , startIdx ) ; if ( endIdx2 == - 1 ) { endIdx2 = int . MaxValue ; } else { if ( endIdx2 < xml . Length && xml [ endIdx2 - 1 ] == ' ' ) { endIdx2 = endIdx2 - 1 ; } } int endIdx = Math . Min ( endIdx1 , endIdx2 ) ; if ( endIdx2 > 0 && endIdx2 < int . MaxValue && endIdx > startIdx ) { return xml . Substring ( startIdx + 1 , endIdx - startIdx - 1 ) ; } else { return null ; } }
Liefert den Namen des Elements beim offset
Liefert den Namen des Elements beim offset
/*|| endIdx1 > offset*/ /*|| endIdx2 > offset*/
None
xml
string
None
offset
int
None