Aktuelle Zeilennummer in einem System.Xml.XmlReader (C# & .Net)
Weiß jemand, wie ich die aktuelle Zeilennummer eines Systems.Xml.XmlReader? Ich versuche zu erfassen, wo in einer Datei, die ich finden-Xml-Elemente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nutzen Sie die
IXmlLineInfo
- Schnittstelle, unterstützt durch eineXmlReader
:XmlNodeReader
nicht ErbenIXmlLineInfo
Erweiterung auf die
IXmlLineInfo
- Schnittstelle, die Dokumentation für diese ziemlich schlecht ist; dabei ein bisschen Graben, ich kann Ihnen sagen, die folgenden:1)
System.Xml.XmlReader
ist Abstrakt, so dass man nie den Umgang mit einer Instanz von dieser, als solche, die Tatsache, dass es nicht implementierenIXmlLineInfo
ist nicht Massiv über (obwohl, wenn es täte, würde es auch alles einfach ein wenig leichter 🙂 )2) Die
System.Xml.IXmlLineInfo
- Schnittstelle verfügt über zwei Eigenschaften:LineNumber
undLinePosition
(das sind die Dinge, die uns wichtig), sowie eine Methode:HasLineInfo()
was laut der Dokumentation wird Sie wissen lassen, wenn ein implementor zurück lineinfo.3) der dokumentierten Erben
System.Xml.XmlReader
haben wir:Blick auf die obige Liste, die
XmlDictionaryReader
wird intern verwendet werden, dieXmlNodeReader
verwendet werden, wenn Sie bestanden haben, die in einem Knoten gelesen werden (die, nachdem Sie eingefügt wurden, ist bereits untethered von dem Quell-Dokument), dieXmlTextReader
undXmlValidtingReader
(beide implementierenIXmlLineInfo
), werden verwendet, wenn Sie beim Lesen eines Dokuments. So, die lange und die kurze davon scheint zu sein, dass, wenn es möglich oder nützlich, geben Sie position Informationen, der Rahmen wird so zu tun.Dass gesagt wird, die Dokumentation scheint sehr hell. Nachdem ich gerade getan, ich endete damit, (mit _xr, als unbekannte konkrete Umsetzung der
System.Xml.XmlReader
):Mit allen, dass gesagt wird, wenn ich tatsächlich führen Sie den obigen code, die Art der _xr endet als
System.Xml.XsdValidatingReader
(good luck finding Dokumentation auf, dass!), die erbt vonSystem.Xml.XmlReader
, aber Erben nicht vonSystem.Xml.XmlValidatingReader
oderSystem.Xml.XmlTextReader
. Als solche, ist es wahrscheinlich sinnvoll, ein Konzept wie die oben genannten.