Предположим, у меня есть XmlNode, и я хочу получить значение атрибута с именем «Name». Как я могу это сделать?
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-документ:
<Root>
<Employee Name ="TestName">
<Childs/>
</Root>
<a x="1" />
, который проходит тест. Возможно, что-то вродеvar attr = node.Attributes["Name"]; if(attr != null) {...}
может сработать.Чтобы расширить решение Konamiman (включая все соответствующие нулевые проверки), я делал следующее:
источник
вы можете перебирать все атрибуты, как и с узлами
источник
если вам нужны только имена, используйте xpath. Нет необходимости выполнять итерацию самостоятельно и проверять значение null.
источник
Если вы используете
chldNode
asXmlElement
вместоXmlNode
, вы можете использоватьВозвращаемое значение будет просто пустая строка , в случае , если имя атрибута не существует.
Итак, ваш цикл может выглядеть так:
Это выберет все узлы,
<node>
окруженные<Node><N0de></N0de><Node>
тегами, а затем переберет их и прочитает атрибут «Имя».источник
Использовать
чтобы получить значение.
источник
Вы также можете использовать это;
источник
Еще одно решение:
Это также позволяет избежать исключения, когда ожидаемого атрибута на
attributeName
самом деле не существует.источник