我正在尝试找到一种简单而巧妙的方法来满足以下要求。
我有这样安排的 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
我的目标是将这样的 firstName、middleName 和 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.),但我不知道第一个或第二个或第三个人的中间名是否丢失。
我希望 SelectNodes() API 会提供一个迭代或索引 ID,因为哪个重复元素具有给定的值。
请建议我一种最简单的方法来实现我所需要的?非常感谢你的帮助,JK