Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取XML节点_C#_Xml - Fatal编程技术网

C# 如何获取XML节点

C# 如何获取XML节点,c#,xml,C#,Xml,我试图获得一个节点示例,如下所示: 我怎么能得到父亲的职业我在用密码 oNotificationDoc.Load(sFileName); oNodeListPerson = oNotificationDoc.GetElementsByTagName("Person"); XmlNode oNodeFather = null; oNodeFather = oNodeListPerson.Item(2); XmlNode oNodeGeneral_temp = oNodeFather.Selec

我试图获得一个节点示例,如下所示: 我怎么能得到父亲的职业我在用密码

oNotificationDoc.Load(sFileName);
oNodeListPerson = oNotificationDoc.GetElementsByTagName("Person");

XmlNode oNodeFather = null;
oNodeFather = oNodeListPerson.Item(2);
 XmlNode oNodeGeneral_temp = oNodeFather.SelectSingleNode("//NmSpace:" + Occupation, nsmgr);
但是得到母亲的职业作为回报

<Person DOB="23121964" Role="Mother" ApproxDateOfMarriage="2" DateOfMarriage="10062015" MaritalStatus="1" Nationality="CN" PPSN="" ApproxDOB="2">

    <PersonName Surname="TEST" Forename1="TEST" OtherSurnames="" BirthSurname="TEST"/>

    <MothersBirthSurname>TEST</MothersBirthSurname>

    <Address Type="Residential" Country="IE" County="D07" Line4="" Line3="TEST" Line2="TEST" Line1="TEST"/>

    <Occupation>BARISTA</Occupation>

    <PrevPregDetails PrevSponAbortions="0" PrevLateFetalDeaths="0" PrevChildrenStillLiving="0" PrevLiveBirths="0" ApproxDateOfLastBirth="" DateOfLastBirth=""/>

    </Person>


    <Person DOB="12101972" Role="Father" Nationality="CN" PPSN="" ApproxDOB="2">

    <PersonName Surname="TEST" Forename1="TEST" OtherSurnames="UNKNOWN" BirthSurname="TEST"/>

    <MothersBirthSurname>TEST</MothersBirthSurname>

    <Address Type="Residential" Country="AA" County="" Line4="" Line3="TEST" Line2="TEST" Line1="TEST"/>

    <Occupation>WAITER</Occupation>

    </Person>

试验
咖啡师
试验
服务员

要在中仅获取父亲角色,请执行以下操作:

<Person DOB="12101972" Role="Father" ...

XPath
可以解决您的问题。关于XPath:

示例代码:

    var xml = XDocument.Load(sFileName);
    var search = xml.XPathSelectElement("//Person[@DOB='12101972' and @Role='Father']/Occupation");
    Console.WriteLine(search.Value);

使用linq,因为它很方便,你可以做任何事情

var doc = XDocument.Parse(xml);
var result = from item in doc.Root.Elements("Person")
              select new { Label = (string)item.Element("Occupation") };

我已经测试了这段代码,它可以与给定的xml一起使用。

请演示如何访问
onodether
!我已经编辑了问题,请展示如何访问Onodelisperson!请显示什么是
mgroxmlcants.g\u cXML\u Person
问题现在更新更多答案请参阅:
var doc = XDocument.Parse(xml);
var result = from item in doc.Root.Elements("Person")
              select new { Label = (string)item.Element("Occupation") };