LinqXML Фильтр по атрибуту - новичок - PullRequest
0 голосов
/ 12 октября 2010

У меня есть ниже XML-документ

 <Documents Databasename="Type1">
<Document>
  <Documentnumber>xxxxxx</Documentnumber>
  <Documentname>xxxxxx</Documentname>
  <DocumentExtension>xxxxxx</DocumentExtension>
  <ImportAction>xxxxxx</ImportAction>
  <Authorname>xxxxxx</Authorname>
  <Practicegroup>xxxxxx</Practicegroup>
  <Createddate>xxxxxx</Createddate>
  <Createdby>xxxxxx</Createdby>
  <Modifieddate>xxxxxx</Modifieddate>
  <Modifiedby>xxxxxx</Modifiedby>
  <Lastaccessddate>xxxxxx</Lastaccessddate>
  <Comments />
  <Sector>Unknown</Sector>
  <Source>Unknown</Source>
  <Quality>Unknown</Quality>
  <KnowHowContentType>Unknown</KnowHowContentType>
  <ActualAutors />
  <SubmittedBy />
  <NumberofAccess>0</NumberofAccess>
  <AreasofLaw />
</Document>
<Document>
  <Documentnumber>xxxxxx</Documentnumber>
  <Documentname>xxxxxx</Documentname>
  <DocumentExtension>xxxxxx</DocumentExtension>
  <ImportAction>xxxxxx</ImportAction>
  <Authorname>xxxxxx</Authorname>
  <Practicegroup>xxxxxx</Practicegroup>
  <Createddate>xxxxxx</Createddate>
  <Createdby>xxxxxx</Createdby>
  <Modifieddate>xxxxxx</Modifieddate>
  <Modifiedby>xxxxxx</Modifiedby>
  <Lastaccessddate>xxxxxx</Lastaccessddate>
  <Comments />
  <Sector>Unknown</Sector>
  <Source>Unknown</Source>
  <Quality>Unknown</Quality>
  <KnowHowContentType>Unknown</KnowHowContentType>
  <ActualAutors />
  <SubmittedBy />
  <NumberofAccess>0</NumberofAccess>
  <AreasofLaw />
</Document> 

хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх неизвестный неизвестный неизвестный неизвестный 0 хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх хххххх неизвестный неизвестный неизвестный неизвестный 0

Я хочу выбрать DocumentNumber, DocumentExtension для заданного атрибута Databasename. Пожалуйста, дайте мне знать, если я объяснил себя.

1 Ответ

1 голос
/ 12 октября 2010

Я мало использовал Linq для XML, так что, вероятно, это не лучший способ, но, похоже, он работает:

string xml = @"
<root>
    <Documents Databasename='Type1'>
    <Document>
      <Documentnumber>1234</Documentnumber>";
      // etc..

XDocument xmlDoc = XDocument.Parse(xml);

var output = from item in xmlDoc.Descendants()
             where item.Name == "Document"
             && item.Parent.Attribute("Databasename").Value == "Type1"
             select new { Number = (string)item.Element("Documentnumber").Value,
                          Extension = item.Element("DocumentExtension").Value
             };

foreach (var item in output) {
    Console.WriteLine(item);
}

Обратите внимание, что я добавил дополнительный элемент 'root' в XML, чтобы эта работа работала (при условии нескольких элементов 'Documents').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...