Я пытаюсь использовать XmlReader для анализа файла и установки атрибутов каждого элемента в переменные с помощью reader.GetAttribute ("atrribute_name"), но элементы могут или не могут иметь этот атрибут, поэтому некоторые элементы дают мне ошибку ... Я бы ожидал, что он просто вернет null, когда атрибут отсутствует, но вместо этого он вызывает ошибки.Ошибка проверки правильности DTM XmlReader по атрибуту
Вот полное исключение:
System.Xml.Schema.XmlSchemaException: The 'opacity' attribute is not declared.
at System.Xml.XmlValidatingReaderImpl.InternalValidationCallback(Object sender, ValidationEventArgs e)
at System.Xml.Schema.BaseValidator.SendValidationEvent(XmlSchemaException e, XmlSeverityType severity)
at System.Xml.Schema.BaseValidator.SendValidationEvent(XmlSchemaException e)
at System.Xml.Schema.DtdValidator.ValidateStartElement()
at System.Xml.Schema.DtdValidator.ProcessElement()
at System.Xml.Schema.DtdValidator.ValidateElement()
at System.Xml.Schema.DtdValidator.Validate()
at System.Xml.XmlValidatingReaderImpl.ProcessCoreReaderEvent()
at System.Xml.XmlValidatingReaderImpl.Read()
at Squared.Tiled.Map.Load(String filename, ContentManager content) in C:\Users\Stephen\Documents\Visual Studio 2008\Projects\Tiled\Tiled.cs:line 650
и вот содержание XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map SYSTEM "http://mapeditor.org/dtd/1.0/map.dtd">
<map version="1.0" orientation="orthogonal" width="32" height="32" tilewidth="32" tileheight="32">
<tileset name="Untitled" firstgid="1" tilewidth="32" tileheight="32">
<image source="tiles.png"/>
</tileset>
<layer name="" width="32" height="32" opacity="0.72">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAO3DAQkAAAwEofv+pddjKLhqqqqq6usHHB1pSAAQAAA=
</data>
</layer>
<layer name="Layer 1" width="32" height="32">
<properties>
<property name="layermeta" value="layervalue"/>
</properties>
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAO2UUQrAMAhD+7P7X3nsbwydibrJRh6UQloatbZrzbMZI9KZc5g4EB3dx9Lhn8m707+C5cP2ReX+p7ByuK55WlQz1P9u9vZFOkrVJ6pXxR/pM/TcjD+in9e/1vsHXtzV/Cfqn+GJ+2f9u+qfgX3Pf/v/hRBCiLfZAUDgXx4AEAAA
</data>
</layer>
</map>
непрозрачности может или не может присутствовать в каждом слое, наряду с несколькими другими атрибутами.
Пожалуйста, будьте более конкретным - «или что-то в этом роде» просто оставляет нам угадывание. Предоставьте точную ошибку и некоторый код, чтобы мы могли фактически идентифицировать проблему, а не догадываться. Благодарю. –
Stephen, вам нужно будет опубликовать XML, который вы пытаетесь проанализировать, и опубликовать полное исключение (это не «ошибка»). Поймайте исключение, затем опубликуйте ex.ToString(). –
Стивен, вы можете заметить, как мало-помалу, больше информации выходит. Возможно, вам понадобится несколько минут, чтобы опередить этот процесс. Мой следующий вопрос будет о коде, который читает XML (и который устанавливает проверку, которая не работает). После того, как вы опубликуете этот код, займите немного времени, чтобы выяснить, о чем вы не говорите. –