XmlElementEventArgs.LineNumber 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
如果 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.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
using namespace System::Xml::Schema;
public ref class Group
{
public:
String^ GroupName;
};
public ref class Test
{
private:
void Serializer_UnknownElement( Object^ sender, XmlElementEventArgs^ e )
{
Console::WriteLine( "Unknown Element" );
Console::Write( "\t {0}", e->Element->Name );
Console::WriteLine( " {0}", e->Element->InnerXml );
Console::WriteLine( "\t LineNumber: {0}", e->LineNumber );
Console::WriteLine( "\t LinePosition: {0}", e->LinePosition );
Group^ x = dynamic_cast<Group^>(e->ObjectBeingDeserialized);
Console::WriteLine( x->GroupName );
Console::WriteLine( sender );
}
public:
void DeserializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
// Add a delegate to handle unknown element events.
ser->UnknownElement += gcnew XmlElementEventHandler( this, &Test::Serializer_UnknownElement );
// A FileStream is needed to read the XML document.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Group^ g = dynamic_cast<Group^>(ser->Deserialize( fs ));
fs->Close();
}
};
int main()
{
Test^ t = gcnew Test;
// Deserialize the file containing unknown elements.
t->DeserializeObject( "UnknownElements.xml" );
}
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时, 属性才返回值。