0

我正在用 C# 编写一个程序,该程序将从服务器获取数据,将其写入文件,然后读取文件以获取包含的数据。最后一部分是问题。我得到了我的 XML 文件流,并且 XML 文件似乎很好,但是除了根节点之外,我的程序不接受任何子节点,即使它在列表中计算了所有 700 个子节点。正在检查我的拼写,寻址,树......到目前为止没有任何效果。

XML 数据:

<?xml version="1.0" encoding="UTF-8"?>
<uniprot xmlns="http://uniprot.org/uniprot" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://uniprot.org/uniprot http://www.uniprot.org/support/docs/uniprot.xsd">
  <entry dataset="Swiss-Prot" created="2005-03-01" modified="2013-10-16" version="51">
    <accession>P69430</accession>
    <accession>O65938</accession>
    <accession>P27856</accession>
    <name>TATA_ECO57</name>
    <protein>
      <recommendedName>
        <fullName>Sec-independent protein translocase protein TatA</fullName>
      </recommendedName>
    </protein>

程序:

Datapath = startupPath + "\\" + Data[0, 0] + ".xml"; 
XmlDocument XMLdoc = new XmlDocument();
            XMLdoc.Load(Datapath); 
 XmlNodeList xnList = XMLdoc.SelectNodes("//*"); //the list shows all 700 entries so the path etc are correct
var node = XMLdoc.SelectSingleNode("uniprot/entry/protein/recommendedName/fullName").InnerText;

一旦我尝试从 uniprot 处理任何子节点,它就是 null 让我发疯。任何人都可以帮忙吗?

4

2 回答 2

4

您是否尝试过使用命名空间?

        XmlDocument doc = new XmlDocument();
        XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
        nsmgr.AddNamespace("ns", "http://uniprot.org/uniprot");
        var node = doc.SelectSingleNode("//ns:exampleNode", nsmgr);
于 2013-10-29T07:04:27.500 回答
0

试试这个: XmlNode node = doc.SelectSingleNode("//uniprot//entry/protein/recommendedName /fullName"); 节点.InnerXml;

于 2013-10-29T07:04:35.993 回答