Я хочу проанализировать следующий XML-файл, который входит в качестве ввода String.XML-синтаксический анализ с использованием XMLReader и foreach
<leadtools_form_processing_fields>
<pages>
<page number="1" dpix="300" dpiy="300">
<fields>
<field type="Leadtools.Forms.Processing.TextFormField, Leadtools.Forms.Processing>
<values>
<value name="LastName" />
<value bounds="232, 875, 736, 76 Pixel" />
<value dropOut="None" />
<value regex_pattern="" />
<value ocr_text_type="FlowText" />
<value enable_icr="False" />
<value enable_ocr="True" />
<value text_field_type="Character" />
</values>
</field>
<field type="Leadtools.Forms.Processing.TextFormField, Leadtools.Forms.Processing>
<values>
<value name="MiddleName" />
<value bounds="1112, 875, 475, 76 Pixel" />
<value dropOut="None" />
<value regex_pattern="" />
<value ocr_text_type="FlowText" />
<value enable_icr="False" />
<value enable_ocr="True" />
<value text_field_type="Character" />
</values>
</field>
</fields>
</page>
</pages>
</leadtools_form_processing_fields>
Я думаю, что XMLReader обеспечивает большую эффективность, чем XMLDocument. Как получить значения элементов в элементе «values» и проанализировать другие элементы с помощью XMLReader и foreach.
Я попытался это: (Вид псевдокоде)
using (XmlReader reader = XmlReader.Create(xmlData))
{
while (reader.Read())
{
reader.ReadToFollowing("pages");
foreach (XmlElement Page in Pages)
{
pageNumber = Page.GetAttribute("number");
reader.ReadToFollowing("fields");
foreach (XmlElement field in fields)
{
type = Page.GetAttribute("type");
reader.ReadToFollowing("values");
foreach (XmlElement value in values)
{
name = value.GetAttribute("name");
string bounds = value.GetAttribute("bounds");
string boundValues[] = bounds.Split(,);
x = boundValues[0];
y = boundValues[1];
width = boundValues[2];
height = boundValues[3];
}
formFields.Add(new FormField() { Name = name, X = x, Y = y, Width = width, Height = height, PageNumber = pageNumber, FormFieldType = type });
}
}
Спасибо!