我試圖找到一個簡單而流暢的方式來執行以下要求。在C中分析可選標籤#
我有一個XML消息排列如下:
<persons>
<person>
<firstName>Mike</firstName>
<middleName>K.</middleName>
<lastName>Kelly</lastName>
</person>
<person>
<firstName>Steve</firstName>
<lastName>David</lastName>
</person>
<person>
<firstName>Laura</firstName>
<middleName>X.</middleName>
<lastName>Xavier</lastName>
</person>
</persons>
我想用XPath表達式來解析這個XML。
persons/person/firstName
persons/person/middleName
persons/person/lastName
我的目標是像這樣的店鋪名字,中間名和lastName變量值到這樣的字符串對象的列表:
firstNameList[0] = "Mike";
firstNameList[1] = "Steve";
firstNameList[2] = "Laura";
middleNameList[0] = "K.";
middleNameList[1] = null;
middleNameList[2] = "X.";
lastNameList[0] = "Kelly";
lastNameList[1] = "David";
lastNameList[2] = "Xavier";
在我的C#代碼,我這樣做:
XmlNodeList firstNameNodeList = xmlDoc.SelectNodes("persons/person/firstName", nsmgr);
XmlNodeList middleNameNodeList = xmlDoc.SelectNodes("persons/person/middleName", nsmgr);
XmlNodeList lastNameNodeList = xmlDoc.SelectNodes("persons/person/lastName", nsmgr);
這段代碼的問題在於,對於中間名,我沒有在第二個人在我的XML列表中。因此,middleNameNodeList返回2個值(K.和X.),但我不知道第1或第2或第3個人的中間名是否丟失。
我希望SelectNodes()API將提供一個迭代或索引ID作爲重複元素有一個給定的值。
請給我一個最簡單的方法來實現我所需要的?非常感謝您的幫助,JK
你可以有<中間名/>對於人X」,沒有中間的名字嗎? – 2011-03-05 02:47:07
@StackOverflowException,這是一個很好的想法。在這種情況下,SelectNodes()會在這個例子中返回3個值嗎? K.,null和X.?我需要試驗它。 – JKK 2011-03-05 03:33:01
是的。第二個middleName不會爲空,但是'XmlNodeList'的'InnerXml'將是空白的。看到我的回答:) – 2011-03-05 03:42:53