У меня есть большой XML-документ (111 МБ), и я хочу перейти на специальный узел (по индексу) очень быстро. Документ имеет около 1000000 узлов, как это:Как установить начальную точку для чтения xml-файла?
<Kt>
<PLZ>01067</PLZ>
<Ort>Dresden</Ort>
<OT>NULL</OT>
<Strasse>Potthoffstr.</Strasse>
</Kt>
Я хочу «прыгать», например, к узлу одна миллионная в документе, и начать с этого читать. Все узлы позади этого должны игнорироваться. Я уже пробовал это с помощью XMLReader, но они всегда начинаются с первого узла.
int i = 0;// v-----------Index of the Node where I want to go!
while (reader.Read() == (i < 1000000))
{
if (reader.Name == "PLZ")
{
textBox1.Text = reader.ReadString();
}
if (reader.Name == "Ort")
{
textBox2.Text = reader.ReadString();
}
if (reader.Name == "OT")
{
textBox3.Text = reader.ReadString();
}
if (reader.Name == "Strasse")
{
textBox4.Text = reader.ReadString();
i++;
}
Как выглядит структура XML-документа!
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Kt.xsd" generated="2014-10-21T18:20:30">
<Kt>
<PLZ>01...</PLZ>
<Ort>Dresden</Ort>
<OT>NULL</OT>
<Strasse>NULL</Strasse>
</Kt>
<Kt>
<PLZ>01067</PLZ>
<Ort>Dresden</Ort>
<OT>Innere Altstadt</OT>
<Strasse>Marienstr.</Strasse>
</Kt>
<Kt>
<PLZ>01067</PLZ>
<Ort>Dresden</Ort>
<OT>NULL</OT>
<Strasse>Potthoffstr.</Strasse>
</Kt>
Другими словами: Каковы возможности загрузить часть большого XML-файла без чтения полного файла.
Запишите этот недостаток в xml. Всегда очень удобно использовать изначально, но для любого приличного количества данных текстовый формат вас подведет. – Gusdor