Read()
メソッドがいくつかの行をスキップしているように見えるため、XML ファイルを解析しようとすると問題が発生します。まず、XML ファイルは次のとおりです。
<comments>
<comment id="e2d6d918-0fbb-4434-9e43-6b028b872867" parentid="00000000-0000-0000-0000-000000000000" approved="True" spam="False" deleted="False">
<date>2012-06-14 18:40:55</date>
<author>*content here*</author>
<email>*content here*</email>
<country>*content here*</country>
<ip>*content here*</ip>
<moderatedby>*content here*</moderatedby>
<content>*content here*</content>
</comment>
<comment id="7f74b8af-73e5-407f-abcb-c3cba5ffc611" parentid="e2d6d918-0fbb-4434-9e43-6b028b872867" approved="True" spam="False" deleted="False">
<date>2012-06-15 01:59:34</date>
<author>*content here*</author>
<email>*content here*</email>
<country>*content here*</country>
<ip>*content here*</ip>
<website>*content here*</website>
<content>*content here*</content>
</comment>
</comments>
そしてコードに:
(私はを使用していますXmlTextReader
)
while (reader.Read())
{
if (reader.Name == "comment" && reader.NodeType == XmlNodeType.Element)
{
Comment newComment = new Comment();
newComment.PostId = postId;
reader.MoveToAttribute("deleted");
newComment.IsDeleted = Convert.ToBoolean(reader.Value);
reader.MoveToAttribute("spam");
newComment.IsSpam = Convert.ToBoolean(reader.Value);
reader.MoveToAttribute("approved");
newComment.IsApproved = Convert.ToBoolean(reader.Value);
reader.MoveToAttribute("parentid");
newComment.ParentCommentId = new Guid(reader.Value);
reader.MoveToAttribute("id");
newComment.PostCommentId = new Guid(reader.Value);
reader.ReadToFollowing("date");
newComment.CommentDate = Convert.ToDateTime(reader.ReadString());
reader.ReadToFollowing("author");
newComment.Author = reader.ReadString();
reader.ReadToFollowing("email");
newComment.Email = reader.ReadString();
reader.ReadToFollowing("country");
newComment.Country = reader.ReadString();
reader.ReadToFollowing("ip");
newComment.Ip = reader.ReadString();
reader.ReadToFollowing("website");
newComment.Website = reader.ReadString();
//reader.ReadToFollowing("moderatedBy");
newComment.ModeratedBy = string.Empty;
//reader.ReadToFollowing("avatar");
newComment.Avatar = string.Empty;
reader.ReadToFollowing("content");
newComment.CommentContent = reader.ReadString();
comments.Add(newComment);
}
}
編集:さらにデバッグを行ったところ、存在しない Web サイト要素を読み取ろうとしていることがわかりました。