다음 요구 사항을 수행하는 쉽고 매끄러운 방법을 찾으려고합니다.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
내 목표는이 같은 문자열 개체의 목록에이 같은 가게 firstName을, 가운데 이름과 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
당신이 가질 수있는 <가운데 이름 />에 대한
이 "K"를 반환해야합니다, "", "X"를 시도? –
@StackOverflowException, 좋은 생각입니다. 이 경우 SelectNodes()는이 예제에서 3 개의 값을 반환합니까? K., null 및 X.? 나는 그것을 실험 할 필요가있다. – JKK
예. 두 번째 middleName은 null이 아니지만'XmlNodeList'의 InnerXml은 비어 있습니다. 내 대답을 참조하십시오 :) –