Załóżmy, że mam XmlNode i chcę uzyskać wartość atrybutu o nazwie „Nazwa”. Jak mogę to zrobić?
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)
{
}
}
}
}
Dokument XML:
<Root>
<Employee Name ="TestName">
<Childs/>
</Root>
<a x="1" />
, który przechodzi test. Może coś takiegovar attr = node.Attributes["Name"]; if(attr != null) {...}
może zadziałać.Aby rozszerzyć rozwiązanie Konamiman (w tym wszystkie odpowiednie sprawdzenia zerowe), oto co robiłem:
źródło
możesz przeglądać wszystkie atrybuty, tak jak robisz to z węzłami
źródło
jeśli potrzebujesz tylko nazw, użyj zamiast tego xpath. Nie ma potrzeby samodzielnego wykonywania iteracji i sprawdzania wartości null.
źródło
Jeśli używasz
chldNode
asXmlElement
zamiastXmlNode
, możesz użyćWartość zwracana będzie po prostu pustym ciągiem na wypadek, gdyby nazwa atrybutu nie istniała.
Twoja pętla mogłaby wyglądać tak:
Spowoduje to zaznaczenie wszystkich węzłów
<node>
otoczonych<Node><N0de></N0de><Node>
tagami, a następnie zapętlenie ich i odczytanie atrybutu „Nazwa”.źródło
Posługiwać się
aby uzyskać wartość.
źródło
Możesz także użyć tego;
źródło
Jeszcze inne rozwiązanie:
Pozwala również uniknąć wyjątku, gdy oczekiwany atrybut w
attributeName
rzeczywistości nie istnieje.źródło