使用XDocument解析数据不会产生任何结果 - 为什么?

时间:2012-02-16 02:42:33

标签: c# linq-to-xml

我有一个xml文件,如

<!--Sample Person Data-->
<Person>
  <PersonDetail PersonId="1">
    <Name>Priyanka Das</Name>
    <Age>30</Age>
    <Sex>Male</Sex>
    <LivesIn>Bangalore</LivesIn>
    <Email>nb@training.com</Email>
  </PersonDetail>
  <PersonDetail PersonId="2">
    <Name>Shashidhar Nikatani</Name>
    <Age>40</Age>
    <Sex>Male</Sex>
    <LivesIn>Bangalore</LivesIn>
    <Email>sn@training.com</Email>
  </PersonDetail>
  <PersonDetail PersonId="3">
    <Name>Arundhuti Roy</Name>
    <Age>27</Age>
    <Sex>Female</Sex>
    <LivesIn>Kerala</LivesIn>
    <Email>ab@training.com</Email>
  </PersonDetail>
  <PersonDetail PersonId="4">
    <Name>Nitin Mallik</Name>
    <Age>28</Age>
    <Sex>Male</Sex>
    <LivesIn>Bangalore</LivesIn>
    <Email>ng@training.com</Email>
  </PersonDetail>
  <PersonDetail PersonId="5">
    <Name>Essaki Raja Kandaswamy</Name>
    <Age>27</Age>
    <Sex>Male</Sex>
    <LivesIn>Madras</LivesIn>
    <Email>er@training.com</Email>
  </PersonDetail>
</Person>

我需要了解居住在班加罗尔的人的详细信息。

我已完成以下操作,但无法获得任何结果

 XDocument xmlSource = null;
   xmlSource = XDocument.Load(@"D:\Personsample.xml");

            var query = from data in xmlSource.Descendants("Person")
                        where (string)data.Element("LivesIn") == "Bangalore"
                        select data;

需要帮助

1 个答案:

答案 0 :(得分:3)

“人”没有直接的“LivesIn”子女,所以data.Element("LivesIn")总是不会产生任何东西。

你确定你不是故意的:

from data in xmlSource.Descendants("PersonDetail")
                    where (string)data.Element("LivesIn") == "Bangalore"
                    select data;