83

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> 

XML 属性の SuperNumber および SuperString をどのように読み取るのですか?

現在、私は XmlDocument を使用しています。XmlDocument を使用する間に値を取得するGetElementsByTagName()と、非常にうまく機能します。属性を取得する方法がわかりませんか?

4

7 に答える 7

119
XmlNodeList elemList = doc.GetElementsByTagName(...);
for (int i = 0; i < elemList.Count; i++)
{
    string attrVal = elemList[i].Attributes["SuperString"].Value;
}
于 2009-06-01T05:58:10.770 に答える
89

XPathを調べる必要があります。使い始めると、リストを繰り返し処理するよりもはるかに効率的で簡単にコーディングできることがわかります。また、必要なものを直接取得することもできます。

次に、コードは次のようになります

string attrVal = doc.SelectSingleNode("/MyConfiguration/@SuperNumber").Value;

XPath 3.0 は 2014 年 4 月 8 日に W3C 勧告になったことに注意してください。

于 2009-06-01T06:07:14.497 に答える
8

XmlDocument の代わりに XDocument に移行し、その構文が必要な場合は Linq を使用できます。何かのようなもの:

var q = (from myConfig in xDoc.Elements("MyConfiguration")
         select myConfig.Attribute("SuperString").Value)
         .First();
于 2009-06-01T07:23:33.887 に答える
8

私はXmlファイルbooks.xmlを持っています

<ParameterDBConfig>
    <ID Definition="1" />
</ParameterDBConfig>

プログラム:

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;
}

現在、attrValの値を持っていますID

于 2012-06-05T10:50:39.080 に答える
5

XmlDocument.Attributes多分?(これには、おそらくあなたが望むことを行うメソッド GetNamedItem がありますが、私は常に属性コレクションを繰り返してきました)

于 2009-06-01T05:53:48.967 に答える
1

サンプルドキュメントが文字列変数にあると仮定しますdoc

> XDocument.Parse(doc).Root.Attribute("SuperNumber")
1
于 2013-03-17T19:55:43.643 に答える