2011-10-05 17 views
2

XMLノードの値を文字列に変換しようとしています。ここでは、XMLのようなものです:xmlノードの値を文字列として取得するC#

<currentvin value="1FTWW31R08EB18119" /> 

私はその値を取得する方法を把握していないようだ。私はこのXMLを書いていませんでした。これまで私は次のようないくつかのアプローチを試みました。

public void xmlParse(string filePath) 
    { 
     XmlDocument xml = new XmlDocument(); 
     xml.Load(filePath); 
     XmlNode currentVin = xml.SelectSingleNode("/currentvin"); 
     string xmlVin = currentVin.Value; 
     Console.WriteLine(xmlVin);   
    } 

これはうまくいきません。私はしてみた:

public void xmlParse(string filePath) 
    { 
     XmlDocument xml = new XmlDocument(); 
     xml.Load(filePath); 
     string xmlVin = xml.SelectSingleNode("/currentvin").Value; 
     Console.WriteLine(xmlVin); 

    } 

しかし、それはどちらも動作しません。オブジェクト参照がオブジェクトのインスタンスに設定されていないことを示すヌル参照例外が発生しています。何か案は?あなたは属性「値」の値(それは一握りだ)いないノード自体の値を探している

+0

可能性があり、XML文書は、私は完全なコンテンツを投稿することができないような独自のものです。あなたのすべての協力に感謝します!みんなからの素晴らしい提案。私は私の部門の他の人にこれをエスカレートするつもりです、私たちが家でそれを解決しなければならないように見えるからです。 :) – admiral142

答えて

4

私は、あなたが「値」という名前のXML属性で、XMLNodeクラスのプロパティValueを混乱していると思います。

xml.SelectSingleNode("/currentvin/@value").Value 

あるいは、ユーザーが選択したXmlNodeのAttributes集まりであるためにあなたのXPathクエリを変更するいずれかのよう

は、XML内の属性です。

+0

私はそれが私の属性探している。残念ながら、このコードは私を助けませんでした。私はまだnull参照例外を取得しています。 – admiral142

+0

これはXMLファイルには1つのノードだけがありますか? XML文書を実際にロードしていますか?最後に、XPATHクエリが正しくないということです。 –

+0

確かに!助けてくれてありがとう! – admiral142

1

- あなたはAttributeプロパティを使用する必要があります。

string xmlVin = xml.SelectSingleNode("/currentvin").Attributes["value"].Value; 

またはIN最初のバージョン:

XmlNode currentVin = xml.SelectSingleNode("/currentvin"); 
string xmlVin = currentVin.Attributes["value"].Value; 
+0

これらは確かに私が得ようとしているもののように見えますが、動作しませんでした。私はまだnull参照例外を取得しています。 – admiral142

+0

@ admiral142:完全なXMLを投稿してください。あなたがノードを取得していない場合でも、間違った方法(つまり、間違ったパスやXMLが名前空間を使用するかもしれません)を取得してください。 – BrokenGlass

0

あなたの全体のXMLだけで、このノードが含まれている場合、それは残念ながらxml.DocumentElement.Attributes["value"].Value;

+0

実際にXMLにはいくつかのノードがありますが、currentvinノードの属性 "value"の値を取得しようとしています。 :P – admiral142

+0

完全なXMLファイルの例を提供できますか? –