Это верно. По своему дизайну вы не можете редактировать настройки пользователя других людей.
Это потому, что у человека в вашем рабочем пространстве могут быть другие рабочие пространства (будь то свои или чужие). Вы являетесь только чьим-то администратором в вашем конкретном рабочем пространстве, и они могут иметь другие рабочие места помимо вашего.
Если Вы дали допустимый XPath, но он ничему не соответствует, SelectSingleNode
не бросит a NullReferenceException
- это просто возвратит пустой указатель.
Если Вы передаете SelectSingleNode
некоторый синтаксически недопустимый XPath, именно тогда это бросит XPathException
.
Таким образом, обычно необходимо было бы просто протестировать, было ли возвращенное значение нулевым или нет.
var baz = navigator.SelectSingleNode("//foo/bar/@baz");
if (baz != null) Console.WriteLine(baz);
Из памяти, может содержать ошибки.
XDocument doc = XDocument.Load("foo.xml");
var att = from a in doc.Descendants("bar")
select a.Attribute("baz")
foreach (var item in att) {
if (item != null) { ... }
}
Если node == null
затем node.HasAttributes
бросит a NullReferenceException
. Эта ситуация произойдет когда //foo/bar
не соответствует никаким элементам в XML-документе.
var node = XDocument.Load(filename)
.Descendants("bar")
.SingleOrDefault(e=>e.Attribute("baz") != null);
if (node != null) Console.WriteLine(node.Attribute("baz").Value);
Я, вероятно, был бы более конкретным в своем xpath.
var doc = XDocument.Load(fileName);
var results = from r in doc.XPathSelectElements("/foo/bar[count(@baz) > 0]")
select r.Attribute("baz");
foreach (String s in results)
Console.WriteLine(s);