У меня есть файлы xml, которые выглядят так:
<?xml version="1.0" encoding="utf-8"?>
<record id="177" restricted="false">
<type>record type</type>
<startdate>2000-10-10</startdate>
<enddate>2014-02-01</enddate>
<titles>
<title xml:lang="en" type="main">Main title</title>
<!-- only one title element with type main -->
<title xml:lang="de" type="official">German title</title>
<!-- can have more titles of type official -->
</titles>
<description>description of the record</description>
<categories>
<category id="122">
<name>category name</name>
<description>category description</description>
</category>
<!-- can have more categories -->
</categories>
<tags>
<tag id="5434">
<name>tag name</name>
<description>tag description</description>
</tag>
<!-- can have more tags -->
</tags>
</record>
Как выбрать данные из этих XML-файлов с помощью LINQ или использовать что-то еще?
System.NullReferenceException
, аtitle.Attribute("type").Value == "official"
выделено... 30.03.2014title
не имеет атрибутаtype
, поэтому он выдает исключение при попытке вызвать.Value
для нулевого значения. Вы на самом деле не указали, как вы хотите получить данные, поэтому я просто сделал свой собственный меньший образец XML для работы. Вы можете обойти эту проблему, проверивnull
перед доступом к дочерним элементам. Подожди, подожди, дай мне перепроверить... 30.03.2014NullReferenceExceptions
. Если вы используете XML-файл, отличный от того, который указан выше в вашем вопросе, и вы получаете исключения и не можете понять, почему и как это исправить, вам следует задать другой вопрос. 30.03.2014<title>
, у которых нет атрибута type, но они мне не нужны. Попробую сdoc.XPathSelectElements("/titles/title")
30.03.2014doc.XPathSelectElements("//titles/title")
работает отлично, спасибо XD 30.03.2014xml:lang
? 30.03.2014Edit -> Paste Special -> Paste XML As Classes
в VS 2013 и... Вау, я получил все сгенерированные классы. Одно условие целевой рамки должно быть 4,5 30.03.2014