Lesen Attribut-Werte mit XmlReader
Ich habe eine XML-Datei, die ich versuche zu Lesen hierund habe den folgenden code ein:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
namespace XML
{
class Program
{
static void Main(string[] args)
{
XmlTextReader textReader = new XmlTextReader("secLendingXML.cfm.xml");
while (textReader.Read())
{
switch (textReader.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine(textReader.Name);
Console.WriteLine(textReader.Value);
break;
case XmlNodeType.Text:
Console.WriteLine(textReader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
Console.WriteLine(textReader.Name + " " + textReader.Value);
break;
case XmlNodeType.Comment:
Console.WriteLine(textReader.Value);
break;
case XmlNodeType.EndElement:
break;
}
}
Console.ReadLine();
}
}
}
Den code ordnungsgemäß funktioniert in dem Sinne, dass es beim Lesen der Knoten und die Rückkehr der Namen. Aber, das Problem ist, dass ich versuche, auch das abrufen der Daten innerhalb der Knoten. In anderen Worten, wenn Sie liest den ersten Abschnitt nach dem test Abschnitt, Lesen:
slnc:DataSet
slnc:Group
slnc:Section
slnc:ActualAvailableToBorrow
*** here ***
slnc:oustandingLoans
Dies ist, wo ich will und der textreader Lesen Sie die folgenden Werte in den Knoten, wie
confidentiality="F"
, currency="USD"
usw., aber es springt direkt zu der
im nächsten Abschnitt Lesen, ohne diese Werte!
<slnc:actualAvailableToBorrow xmlns:slnc="http://www.newyorkfed.org/xml/schemas/SecLending"
confidentiality="F" currency="USD" decimals="0" method="AA"
multiplier="5" securityLendingType="AA" status="A" value="1474"/>
Wie bekomme ich den textreader Lesen Sie die Attribut-Werte? Es wäre ideal für Sie zum drucken der Wert der "Währung", und dann seinen Wert: "F", und so weiter.
InformationsquelleAutor der Frage weskpga | 2012-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Einzigen, Namens-Attribut
Verwenden XmlTextReader.GetAttribute (MSDN)
Ein nettes feature dieser Funktion: es wird nicht verursachen eine Ausnahme, wenn das Attribut nicht definiert ist - es wird einfach zurück
Null
.Bekommen Alle Attribute
Verwenden XmlTextReader.MoveToAttribute (MSDN)
Verwenden Sie die AttributeCount-Eigenschaft in Kombination mit MoveToAttribute:
InformationsquelleAutor der Antwort JDB
Könnte man ändern die Schleifenbedingung ein wenig, so dass es auch durchläuft Attribute:
MoveToNextAttribute
Methode Fortschritte reader, um das nächste Attribut im aktuellen element oder false zurückgibt, wenn es nicht so ist.InformationsquelleAutor der Antwort ghord