XmlElementEventArgs.LineNumber Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает номер строки, где обнаружен неизвестный элемент, если средство чтения XML является XmlTextReader.
public:
property int LineNumber { int get(); };
public int LineNumber { get; }
member this.LineNumber : int
Public ReadOnly Property LineNumber As Integer
Значение свойства
Номер строки, где обнаружен неизвестный элемент, если средство чтения XML является значением XmlTextReader; в противном случае — -1.
Примеры
В следующем примере десериализируется класс с именем из файла с именем Group UnknownElements.xml. Каждый раз, когда элемент найден в файле, который не имеет соответствующего члена в классе, UnknownElement происходит событие. Чтобы попробовать пример, вставьте следующий XML-код в файл с именем UnknownElements.xml.
<?xml version="1.0" encoding="utf-8"?>
<Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GroupName>MyGroup</GroupName>
<GroupSize>Large</GroupSize>
<GroupNumber>444</GroupNumber>
<GroupBase>West</GroupBase>
</Group>
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Xml.Schema;
public class Group{
public string GroupName;
}
public class Test{
static void Main(){
Test t = new Test();
// Deserialize the file containing unknown elements.
t.DeserializeObject("UnknownElements.xml");
}
private void Serializer_UnknownElement(object sender, XmlElementEventArgs e){
Console.WriteLine("Unknown Element");
Console.WriteLine("\t" + e.Element.Name + " " + e.Element.InnerXml);
Console.WriteLine("\t LineNumber: " + e.LineNumber);
Console.WriteLine("\t LinePosition: " + e.LinePosition);
Group x = (Group) e.ObjectBeingDeserialized;
Console.WriteLine (x.GroupName);
Console.WriteLine (sender.ToString());
}
private void DeserializeObject(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Group));
// Add a delegate to handle unknown element events.
ser.UnknownElement+=new XmlElementEventHandler(Serializer_UnknownElement);
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(filename, FileMode.Open);
Group g = (Group) ser.Deserialize(fs);
fs.Close();
}
}
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Imports System.Xml.Schema
Public Class Group
Public GroupName As String
End Class
Public Class Test
Shared Sub Main()
Dim t As Test = new Test()
' Deserialize the file containing unknown elements.
t.DeserializeObject("UnknownElements.xml")
End Sub
Private Sub Serializer_UnknownElement _
(sender As Object , e As XmlElementEventArgs)
Console.WriteLine("Unknown Element")
Console.WriteLine(ControlChars.Tab & e.Element.Name + " " & e.Element.InnerXml)
Console.WriteLine(ControlChars.Tab & e.LineNumber & ":" & e.LineNumber)
Console.WriteLine(ControlChars.Tab & e.LinePosition & ":" & e.LinePosition)
Dim x As Group = CType( e.ObjectBeingDeserialized, Group)
Console.WriteLine (x.GroupName)
Console.WriteLine (sender.ToString())
End Sub
Private Sub DeserializeObject(filename As String)
Dim ser As XmlSerializer = new XmlSerializer(GetType(Group))
' Add a delegate to handle unknown element events.
AddHandler ser.UnknownElement, _
AddressOf Serializer_UnknownElement
' A FileStream is needed to read the XML document.
Dim fs As FileStream = new FileStream(filename, FileMode.Open)
Dim g As Group = CType(ser.Deserialize(fs),Group)
fs.Close()
End Sub
End Class
Комментарии
Свойство LineNumber возвращает значение, только если базовый модуль чтения XML является XmlTextReader.