Angenommen, ich habe einen XmlNode und möchte den Wert eines Attributs mit dem Namen "Name" abrufen. Wie kann ich das machen?
XmlTextReader reader = new XmlTextReader(path);
XmlDocument doc = new XmlDocument();
XmlNode node = doc.ReadNode(reader);
foreach (XmlNode chldNode in node.ChildNodes)
{
**//Read the attribute Name**
if (chldNode.Name == Employee)
{
if (chldNode.HasChildNodes)
{
foreach (XmlNode item in node.ChildNodes)
{
}
}
}
}
XML-Dokument:
<Root>
<Employee Name ="TestName">
<Childs/>
</Root>
<a x="1" />
, das den Test besteht. Vielleichtvar attr = node.Attributes["Name"]; if(attr != null) {...}
könnte so etwas funktionieren.Um die Konamiman-Lösung (einschließlich aller relevanten Nullprüfungen) zu erweitern, habe ich Folgendes getan:
quelle
Sie können alle Attribute wie bei Knoten durchlaufen
quelle
Wenn Sie nur die Namen benötigen, verwenden Sie stattdessen xpath. Sie müssen die Iteration nicht selbst durchführen und nach null suchen.
quelle
Wenn Sie
chldNode
alsXmlElement
anstelle von verwendenXmlNode
, können Sie verwendenDer Rückgabewert ist nur eine leere Zeichenfolge , falls der Attributname nicht vorhanden ist.
Ihre Schleife könnte also so aussehen:
Dadurch werden alle
<node>
von<Node><N0de></N0de><Node>
Tags umgebenen Knoten ausgewählt und anschließend durchlaufen und das Attribut "Name" gelesen.quelle
Verwenden
um den Wert zu erhalten.
quelle
Sie können dies auch verwenden;
quelle
Noch eine andere Lösung:
Außerdem wird die Ausnahme vermieden, wenn das erwartete Attribut
attributeName
tatsächlich nicht vorhanden ist.quelle