2016-07-06 2 views
0
  var m_strFilePath = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=" + cmbLibrary.Text + "&term=" + txtProtein.Text; 



     string xmlStr; 
     using (var wc = new WebClient()) 
     { 
      xmlStr = wc.DownloadString(m_strFilePath); 
     } 
     var xmlDoc = new XmlDocument(); 
     xmlDoc.LoadXml(xmlStr); 

     txtblkProtein.Text = xmlStr; 
     lstID.ItemsSource = xmlStr; 

     lblSearch.Content = m_strFilePath; 

Это код, который в настоящее время заполняется текстовым блоком и списком из NCBI.Загрузка данных xml с URL-адреса. Возникли проблемы с фильтрацией, чтобы отображать только определенные поля.

Моя проблема заключается в том, что Textblock отображает все XML-данные в одном большом кластере, а в списке отображается один символ в строке.

Это исходные данные, с которыми я работаю.

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=dystrophin

Везде я ищу, чтобы узнать, как отобразить только определенные поля (например, ID) с этими данными они предполагают я форматирование локального файла.

Любые советы или руководство были бы весьма признательны, я новичок в этом не очень осведомлен.

Спасибо

+0

Назначением ListBox является отображение * коллекция * из Предметы. Строка представляет собой набор символов. ListBox отображает один символ в строке, потому что вы дали ему строку, которая представляет собой набор символов. Если вы даете ему набор строк, он отображает одну строку в строке. Если вы даете ему набор чисел с плавающей запятой, он отображает одно число с плавающей запятой в строке. Вместо этого вы дали ему набор персонажей. Что вы * хотели сделать ListBox? –

+0

Почему вы анализируете XML, а затем используете строку unparsed вместо XML-документа, который вы только что создали? –

ответ

0

Вы получаете ответ в виде строки и присвоить его xmlStr. Затем вы назначаете эту строку текстовому блоку: txtblkProtein.Text = xmlStr;, поэтому текст - это вся строка ответа.

Вместо этого вам необходимо работать с XmlDocument и извлекать из него элементы и атрибуты. Например. (http://csharp.net-tutorials.com/xml/reading-xml-with-the-xmldocument-class/)

1

Почему бы вам не создать объект XmlNodeReader и загрузить его с помощью XmlDocument. Затем загрузите набор данных из XmlNodeReader.

Как только у вас есть данные в наборе данных, вы можете манипулировать/отображать любые таблицы и столбцы, которые вы хотите.

Попробуйте этот код ...

DataSet DS = new DataSet(); 
XmlNodeReader xmlReader = new XmlNodeReader(xmlDoc); 
DS.ReadXml(xmlReader); 
0

В VB формах это получить бы идентификаторы и показать их в ListBox

Dim someXE As XElement 

    someXE = XElement.Load("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=dystrophin") 'to load from file/uri 

    lstID.Items.AddRange((From id In someXE.<IdList>.Elements Select id.Value).ToArray)