Значение атрибута элементов XML всегда является типом данных строки?

1

Когда я создаю XML-документ с использованием LINQ, когда я добавляю элемент XElement в Root с некоторыми атрибутами, и когда я читаю этот документ XElement с помощью LINQ, возвращаемое значение XAttributes.Value является строкой по умолчанию!
Чтобы присвоить это значение переменной типа bool, необходимо вызвать функцию "Convert.ToBoolean()"

  XDocument Xd = new XDocument(new XElement("Numbers"));
  Xd.Root.Add(new XElement("13", new XAttribute("Name", "13")
                               , new XAttribute("IsEvenNumber", false)
                               , new XAttribute("HowManyDevidersItHas", 2)));
  Xd.Save(@"C:\XDocument.xml");
  bool b1 = Convert.ToBoolean(XD1.Root.Element("13").Attribute("IsEvenNumber").Value);
  ...

Как вы видете:
значение XAttribute, называемое "Name", должно быть длинным типом!
значение XAttribute, называемое "IsEvenNumber", должно быть bool-типом!

Мне нужно знать: возможно ли создать XElement с некоторыми XAttributes, сохранить его, прочитать его снова и назначить его XAttributes.Value некоторой переменной типа bool без вызова функции "Convert.ToBoolean()"?

  • 2
    Вы можете создавать классы со строго типизированными членами и сериализовать / десериализовывать объекты. Преобразование будет выполнено автоматически.
  • 0
    или без ... приведение: я имею в виду без ... bool b1 = (bool) (XD1.Root.Element ("13"). Атрибут ("IsEvenNumber"). Значение)
Теги:
linq
xelement
xattribute

1 ответ

0

К сожалению, свойство XElement.Value выглядит как строка.

http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.value(v=vs.90).aspx

Таким образом, вам всегда нужно указать значение для вашего типа данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню