none
linq to xml提取不出来?奇怪的问题 RRS feed

  • 问题

  • 1.xml 文件是:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE HPRD3r SYSTEM "hprd.dtd">
    <HPRD3r xmlns="org:hprd:dtd:hprd3r">
      <protein isoform="00001_1" version="5" id="HPRD_00001">
        <titles>


       <title>Aldehyde dehydrogenase 1</title>

            <alt_title>Aldehyde dehydrogenase 1 family, member A1</alt_title>
            <alt_title>ALDH1</alt_title>
            <alt_title>ALHDII</alt_title>
            <alt_title>ALDH-E1</alt_title>
            <alt_title>Acetaldehyde dehydrogenase 1</alt_title>
            <alt_title>ALDH, Liver cytosolic</alt_title>
            <alt_title>Retinal dehydrogenase 1</alt_title>
            <alt_title>RALDH 1</alt_title>
            <alt_title>ALDC</alt_title>
            <alt_title>EC 1.2.1.36</alt_title>
        </titles>

        <omim>0</omim>

        <gene_symbol>ALDH1A1</gene_symbol>

        <gene_map_locus>
           <title>9q21.13</title>
        </gene_map_locus>
        </protein>
    </HPRD3r>

    我要提取其中的元素:gene_symbol
    我这样写的:
    using System;
    using System.Linq;
    using System.Xml.Linq;

    namespace ConsoleApplication1
    {
        class Class1
        {
            static void Main(string[] args)
            {
                XDocument xdoc = XDocument.Load("1.xml");
                var query = from people in xdoc.Descendants("gene_symbol")
                            select people.Value;
                Console.WriteLine("{0} Players Found", query.Count());
                Console.WriteLine();

                foreach (var item in query)
                {
                    Console.WriteLine(item);

                }
                Console.ReadLine();
            }
        }
    }

    为什么没有结果啊?提取别的文件都可以的如:
    <?xml version="1.0" encoding="utf-8" ?>
    <userSet>
      <userInfo id="1" name="Guozhijian">
        <profile>
          <phoneNumber>13818181818</phoneNumber>
          <country>China</country>
        </profile>
      </userInfo>
      <userInfo id="2" name="Zhenglanzhen">
        <profile>
          <phoneNumber>13919191919</phoneNumber>
          <country>Korea</country>
        </profile>
      </userInfo>
    </userSet>
    2009年7月31日 9:27

答案

  • 发现问题了 您在前面指定了 xmlns

    所以name 变成

    {org:hprd:dtd:hprd3r}gene_symbol 了


    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月31日 9:53

全部回复

  •  var query = from people in xdoc.Descendants("gene_symbol")
                            select people.Value;


    您试验下


     var query = from people in xdoc.Descendants() where Name=="gene_symbol"
                            select people.Value;

    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月31日 9:46
  • 发现问题了 您在前面指定了 xmlns

    所以name 变成

    {org:hprd:dtd:hprd3r}gene_symbol 了


    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月31日 9:53