Я пытаюсь найти простой и удобный способ выполнить следующее требование.
У меня есть 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>
Я хочу проанализировать этот XML с помощью выражений xPath.
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.), но я не знаю, отсутствует ли второе имя первого, второго или третьего лица.
Я надеялся, что API SelectNodes () предоставит идентификатор итерации или индекса, для которого повторяющийся элемент имеет заданное значение.
Пожалуйста, предложите мне самый простой способ достичь того, что мне нужно? Большое спасибо за вашу помощь, JK