Есть такой атрибут offset="0 37"
тут в одном атрибуте два значения - по x и по y.
Стандартный майкрософтовский XmlTextReader при чтении такого атрибута выбрасывает исключение "Multiple document element was detected".
Как я понял - нестандартный XML-ский атрибут? Или что-то не еще не то? Можно ли такой атрибут читать?
Скрипт подобный:
Синтаксис:
Используется csharp
if (File.Exists(path))
{
StreamReader r = File.OpenText(path);
try
{
XmlTextReader reader = new XmlTextReader(r) { WhitespaceHandling = WhitespaceHandling.None };
while (reader.Read())
{
if (reader.Name == "Font")
{
string a = reader.GetAttribute("texturesize");
atr = a.Split(' ');
Size stex = new Size(Int32.Parse(atr[0]), Int32.Parse(atr[1]));
CustomFont newFont = new CustomFont(reader.GetAttribute("family"), reader.GetAttribute("texturename"),
Int32.Parse(reader.GetAttribute("size")), Int32.Parse(reader.GetAttribute("height")), reader.GetAttribute("style"), stex);
while (reader.Read() && reader.Name == "Char")
{
atr = reader.GetAttribute("rect").Split(' ');
Rect pos = new Rect(Int32.Parse(atr[0]), Int32.Parse(atr[1]), Int32.Parse(atr[2]), Int32.Parse(atr[3]));
atr = reader.GetAttribute("offset").Split(' ');
Point of = new Point(Int32.Parse(atr[0]), Int32.Parse(atr[1]));
ChrDesc chr = new ChrDesc(reader.GetAttribute("code").ToCharArray()[0], pos, of, Int32.Parse(reader.GetAttribute("width")));
newFont.AddChar(chr);
}
CustomFonts.AddFont(newFont);
}
}
reader.Close();
}
catch (XmlException e)
{
Debug.Log("error occured: " + e.Message);
}
finally
{
r.Close();
}
{
StreamReader r = File.OpenText(path);
try
{
XmlTextReader reader = new XmlTextReader(r) { WhitespaceHandling = WhitespaceHandling.None };
while (reader.Read())
{
if (reader.Name == "Font")
{
string a = reader.GetAttribute("texturesize");
atr = a.Split(' ');
Size stex = new Size(Int32.Parse(atr[0]), Int32.Parse(atr[1]));
CustomFont newFont = new CustomFont(reader.GetAttribute("family"), reader.GetAttribute("texturename"),
Int32.Parse(reader.GetAttribute("size")), Int32.Parse(reader.GetAttribute("height")), reader.GetAttribute("style"), stex);
while (reader.Read() && reader.Name == "Char")
{
atr = reader.GetAttribute("rect").Split(' ');
Rect pos = new Rect(Int32.Parse(atr[0]), Int32.Parse(atr[1]), Int32.Parse(atr[2]), Int32.Parse(atr[3]));
atr = reader.GetAttribute("offset").Split(' ');
Point of = new Point(Int32.Parse(atr[0]), Int32.Parse(atr[1]));
ChrDesc chr = new ChrDesc(reader.GetAttribute("code").ToCharArray()[0], pos, of, Int32.Parse(reader.GetAttribute("width")));
newFont.AddChar(chr);
}
CustomFonts.AddFont(newFont);
}
}
reader.Close();
}
catch (XmlException e)
{
Debug.Log("error occured: " + e.Message);
}
finally
{
r.Close();
}