从 url 直接加载 xml 数据.在过滤它以仅显示某些字段时遇到问题

本文关键字:显示 字段 问题 遇到 url 加载 xml 过滤 数据 | 更新日期: 2023-09-27 17:55:14

            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 数据,而列表框每行显示一个字符。

这是我正在使用的原始数据。

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

在我搜索以了解如何仅显示具有此数据的某些字段(如 ID)的任何地方,他们都认为我正在格式化本地文件。

任何提示或方向将不胜感激,我是新手

,知识渊博。

谢谢

从 url 直接加载 xml 数据.在过滤它以仅显示某些字段时遇到问题

为什么不创建一个 XmlNodeReader 对象并将其与 XmlDocument 一起加载。然后从 XmlNodeReader 加载数据集。

将数据放在数据集中后,您可以操作/显示所需的任何表和列。

试试这个代码...

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

您可以编写 XPATH 来提取所需的数据

或者,您也可以尝试 LINQ to XMLhttps://msdn.microsoft.com/fr-fr/library/bb387098.aspx

您以字符串形式获取响应并将其分配给xmlStr 。然后,将此字符串分配给文本块:txtblkProtein.Text = xmlStr; ,因此 Text 是整个响应字符串。

相反,您需要使用XmlDocument并从中提取元素和属性。 例如(http://csharp.net-tutorials.com/xml/reading-xml-with-the-xmldocument-class/)

在VB表单中,这将获取ID并将其显示在列表框中

    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)