使用XmlDocument读取XML属性

Ale*_*lex 76 .net c# xml xmldocument

如何使用C#的XmlDocument读取XML属性?

我有一个XML文件,看起来有点像这样:

<?xml version="1.0" encoding="utf-8" ?>
<MyConfiguration xmlns="http://tempuri.org/myOwnSchema.xsd" SuperNumber="1" SuperString="whipcream">
    <Other stuff />
</MyConfiguration> 
Run Code Online (Sandbox Code Playgroud)

我如何读取XML属性SuperNumber和SuperString?

目前我正在使用XmlDocument,我使用XmlDocument获取其中的值GetElementsByTagName(),这非常有效.我只是无法弄清楚如何获得属性?

Ars*_*yan 106

XmlNodeList elemList = doc.GetElementsByTagName(...);
for (int i = 0; i < elemList.Count; i++)
{
    string attrVal = elemList[i].Attributes["SuperString"].Value;
}
Run Code Online (Sandbox Code Playgroud)


Gre*_*reg 87

你应该研究一下XPath.一旦你开始使用它,你会发现它比迭代列表更有效,更容易编码.它还可以让您直接获得所需的东西.

然后代码将类似于

string attrVal = doc.SelectSingleNode("/MyConfiguration/@SuperNumber").Value;
Run Code Online (Sandbox Code Playgroud)

请注意,XPath 3.0于2014年4月8日成为W3C推荐标准.


Mat*_*man 8

您可以迁移到XDocument而不是XmlDocument,然后如果您喜欢该语法则使用Linq.就像是:

var q = (from myConfig in xDoc.Elements("MyConfiguration")
         select myConfig.Attribute("SuperString").Value)
         .First();
Run Code Online (Sandbox Code Playgroud)


小智 7

我有一个Xml文件books.xml

<ParameterDBConfig>
    <ID Definition="1" />
</ParameterDBConfig>
Run Code Online (Sandbox Code Playgroud)

程序:

XmlDocument doc = new XmlDocument();
doc.Load("D:/siva/books.xml");
XmlNodeList elemList = doc.GetElementsByTagName("ID");     
for (int i = 0; i < elemList.Count; i++)     
{
    string attrVal = elemList[i].Attributes["Definition"].Value;
}
Run Code Online (Sandbox Code Playgroud)

现在,attrVal有了价值ID.


jer*_*jvl 5

XmlDocument.Attributes也许?(其中有一个方法GetNamedItem,可能会做你想要的,虽然我总是只迭代属性集合)