使用C#获取XML文档的属性值

Sha*_*fiz 10 c# xml

假设我有以下XML文档.

<reply success="true">More nodes go here</reply>
Run Code Online (Sandbox Code Playgroud)

如何获取属性成功的值,在这种情况下将是字符串"true".

Edw*_*ing 26

我会尝试这样的事情:

XmlDocument doc = new XmlDocument();
doc.LoadXml("<reply success=\"true\">More nodes go here</reply>");

XmlElement root = doc.DocumentElement;

string s = root.Attributes["success"].Value;
Run Code Online (Sandbox Code Playgroud)


Rob*_*ney 9

如果将XML加载到a中XmlDocument,则可以通过多种方式获取属性的值.您可以使用XPath来查找属性:

XmlAttribute a = doc.SelectSingleNode("/reply/@success");
Console.Write(a.Value);
Run Code Online (Sandbox Code Playgroud)

如果您已经拥有XmlElement属性(在这种情况下是文档元素),那么您可以使用GetAttribute:

Console.Write(doc.DocumentElement.GetAttribute("success"));
Run Code Online (Sandbox Code Playgroud)

如果你正在使用XPathDocumentor XmlReader或者有类似的方法XDocument.

但是,在所有情况下,您希望按名称获取属性,而不是其位置.在您的测试用例中,只有一个属性; 在任何现实世界的应用程序中,可能存在多个属性,并且XML中的属性排序并不重要.这两个元素在语义上是等价的:

<a foo='true' bar='false'/>

<a bar='false' foo='true'/>
Run Code Online (Sandbox Code Playgroud)

您甚至不知道XML解析器将按照它们在文档中出现的顺序向您显示属性; 根据实现,解析器可能按字母顺序或随机顺序将它们提供给您.(我见过两个.)