後の手順で読み取る XML インデックス ファイルを作成しています。可変長配列があり、それらを 1 つのファイルに書き込んでいます。
問題があります。リーダー コード内にあると思います。何らかの理由で、TimeStamp 要素と Long 要素は正しく配列に読み込まれますが、Lat 要素と VideoFile 要素はスキップされます。何らかの理由で、reader.nodetype が返されません。read() メソッドがそれらを取得する唯一の方法は TEXT nodetype であり、その後は innerxml 値のみを表示しますが、これは私には役に立ちません。
XML ファイルの例を保存すると、以下のコードは完全に実行可能になります。
繰り返しになりますが、stack ユーザーに感謝します。
創造
using System.Xml;
XmlTextWriter xmlwriter = new XmlTextWriter(file, null);
xmlwriter.Formatting = Formatting.Indented;
//xmlwriter.Indentation = 4;
xmlwriter.WriteStartDocument();
xmlwriter.WriteStartElement("Index");
for (int i = 0; i < malLat.Count; i++)
{
xmlwriter.WriteStartElement("Marker");
xmlwriter.WriteStartElement("TimeStamp");
xmlwriter.WriteString(malTimes[i].ToString());
xmlwriter.WriteEndElement();
xmlwriter.WriteStartElement("Lat");
xmlwriter.WriteString(malLat[i].ToString());
xmlwriter.WriteEndElement();
xmlwriter.WriteStartElement("Long");
xmlwriter.WriteString(malLong[i].ToString());
xmlwriter.WriteEndElement();
xmlwriter.WriteStartElement("VideoFile");
xmlwriter.WriteString(malVideoTitle[i].ToString());
xmlwriter.WriteEndElement();
xmlwriter.WriteEndElement();
}
xmlwriter.WriteEndElement();
xmlwriter.WriteEndDocument();
xmlwriter.Close();
読む
using System.Xml;
XmlTextReader lxmlReader = new XmlTextReader(mstrIndexFile + ".xml");
lxmlReader.WhitespaceHandling = WhitespaceHandling.None;
while (lxmlReader.Read())
{
if (lxmlReader.NodeType == XmlNodeType.Element)
{
if (lxmlReader.Name == "TimeStamp")
{
malTimes.Add(lxmlReader.ReadInnerXml().ToString());
}
else if (lxmlReader.Name == "Lat")
{
malLat.Add(lxmlReader.ReadInnerXml().ToString());
}
else if (lxmlReader.Name == "Long")
{
malLong.Add(lxmlReader.ReadInnerXml().ToString());
}
else if (lxmlReader.Name == "VideoFile")
{
malVideoTitle.Add(lxmlReader.ReadInnerXml().ToString());
}
}
}
lxmlReader.Close();
XML ドキュメントのサンプル
<Index>
<Marker>
<TimeStamp>2011-7-17 23:18:39</TimeStamp>
<Lat>-121.261953323166</Lat>
<Long>43.0594755392741</Long>
<VideoFile>C:\Users\kpenner\Desktop\Video Dev\1_1.wmv</VideoFile>
</Marker>
<Marker>
<TimeStamp>2011-7-17 23:18:40</TimeStamp>
<Lat>-122.260755</Lat>
<Long>46.05878</Long>
<VideoFile>C:\Users\kpenner\Desktop\Video Dev\1_1.wmv</VideoFile>
</Marker>
</Index>