0
와 자식 요소를 통해 반복 : 나는 현재로 읽고있다다음 XML (예)을 감안할 때 XmlReader를
<root>
<foo>some data</foo>
<bar>some other data</bar>
</root>
:이처럼 실행하면, 나는 예외를 가지고
reader.ReadToFollowing("root")
if(reader.HasAttributes) { /* not relevant in this usecase*/ }
while(reader.IsStartElement())
{
reader.ReadStartElement()
var elementName = reader.LocalName;
var value = reader.ReadElementContentAs(typeof(ExpectedType),null);
//Process(elementName, value);
reader.ReadEndElement();
}
'요소'는 (는) 잘못된 XmlNodeType입니다. reader.ReadEndElement();
마지막 줄을 제거하면 while은 한 번만 실행됩니다. foo가 올바르게 처리되고 막대가 읽히지 않습니다.
의견이 있으십니까?
내가 그런 식으로하면 요소 사이의 WhitespaceNodes를 건너 뛰고 "ReadElementContentAs 메서드가 노드 유형 EndElement에서 지원되지 않습니다."라는 메시지가 나타납니다. 두 번째 요소의 ReadElementContentAsString()에 ... –
루프에서 요소가 아닌 모든 요소를 건너 뛰기 : if (reader.NodeType! = XmlNodeType.Element) {continue; }' – sc3w
ReadElementContentAsString()도 리더를 다음 요소에 배치하는 것처럼 보입니다. 그렇게해야합니까? 그렇지 않다면, 나는 플랫폼에있는 버그를 발견했다. (스마트 디바이스에서 .Net CF 복제본을 사용하고있다.) Thx, 그것은 많이 설명 할 것이다. -s –