作为XML文档的一部分,我有以下元素:
<RegisterEntry>
<EntryNumber>3</EntryNumber>
<EntryDate>2009-01-30</EntryDate>
<EntryType>Registered Charges</EntryType>
<EntryText>REGISTERED CHARGE dated 30 December 2008.</EntryText>
</RegisterEntry>
<RegisterEntry>
<EntryNumber>4</EntryNumber>
<EntryType>Registered Charges</EntryType>
<EntryText>REGISTERED CHARGE dated 30 December 2008.</EntryText>
</RegisterEntry>
我正在使用XmlReader遍历文档。RegisterEntry是XMLNodeType.Element,其中包含四个XMLNodeType.Text。当XmlReader在NodeType.Text上返回空字符串时,我该如何将每个Text值分配给不同的变量?另外,重复的元素并不总是具有相同数量的文本元素。以下是代码:
XmlTextReader reader = new XmlTextReader(fName);
if(reader.NodeType == XmlNodeType.Element && reader.Name =="RegisterEntry")
{
propEntryNo = "";
propEntryDate = "";
propEntryType = "";
propEntryText = "";
while(reader.Read())
{
if(reader.NodeType == XmlNodeType.Text && reader.Name == "EntryNumber" && reader.HasValue)
{
propEntryNo = reader.Value;
}
if (reader.NodeType == XmlNodeType.Text && reader.Name == "EntryDate" && reader.HasValue)
{
propEntryDate = reader.Value;
}
if (reader.NodeType == XmlNodeType.Text && reader.Name == "EntryType" && reader.HasValue)
{
propEntryType = reader.Value;
}
if (reader.NodeType == XmlNodeType.Text && reader.Name == "EntryText" && reader.HasValue)
{
propEntryText += reader.Value + ",";
}
if(reader.NodeType == XmlNodeType.EndElement && reader.Name == "RegisterEntry")
{
add variable values to list
break;
}
}
}
在上述每个if语句中,NodeType返回为Text,而Name为空字符串。
RegisterEntry
中的所有子节点,无论它们是否存在? - er-showhile
循环,并将所有值收集到单个变量中,因此你的变量仅保存了while循环的最后一次迭代值。因此,你只想要xml中的最后一个RegisterEntry
。 - er-shoXmlTextReader
。只需将此XML文件反序列化为您的对象即可。 - Yeldar Kurmangaliyev