/// <summary>
/// This method parses a string with attributes and returns a Properties object.
/// </summary>
/// <param name="str">a string of this form: 'key1="value1"; key2="value2";... keyN="valueN" '</param>
/// <returns>a Properties object</returns>
public static Properties ParseAttributes(string str) {
Properties result = new Properties();
if (str == null) return result;
StringTokenizer keyValuePairs = new StringTokenizer(str, ";");
StringTokenizer keyValuePair;
string key;
string value;
while (keyValuePairs.HasMoreTokens()) {
keyValuePair = new StringTokenizer(keyValuePairs.NextToken(), ":");
if (keyValuePair.HasMoreTokens()) key = keyValuePair.NextToken().Trim().Trim();
else continue;
if (keyValuePair.HasMoreTokens()) value = keyValuePair.NextToken().Trim();
else continue;
if (value.StartsWith("\"")) value = value.Substring(1);
if (value.EndsWith("\"")) value = value.Substring(0, value.Length - 1);
result.Add(key.ToLower(CultureInfo.InvariantCulture), value);
}
return result;
}