子节点不被接受

时间:2013-10-29 06:55:47

标签: c# xml

我正在编写一个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,这让我很生气。有人可以帮忙吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

试试这个:XmlNode node = doc.SelectSingleNode(&#34; // uniprot // entry / protein / recommendedName / fullName&#34;);  node.InnerXml;