2017-02-01 147 views
0

我想獲得一個節點例如爲如下: 我怎麼能得到父親的職業,我使用的代碼如何獲取XML節點

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> 
+0

請告訴你如何訪問'oNodeFather'! –

+0

我修改了問題 –

+0

請說明如何訪問'oNodeListPerson'! –

回答

0

若只需得到父親的角色:

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

使用XPath表達式/Person[@Role='Father']

後您使用代碼:

XmlNode oNodeGeneral_temp = oNodeFather.SelectSingleNode("//NmSpace:" + Occupation, nsmgr); 
0

XPath可以解決你的問題。有關XPath:https://en.wikipedia.org/wiki/XPath

示例代碼:

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

更多答案見:http://stackoverflow.com/questions/41956831/get-datas-from-xml-document/41957268#41957268 –

0

使用LINQ,因爲它的方便,你可以做任何事情。

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

我測試過這段代碼,它可以與你給定的xml一起工作。