質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Q&A

解決済

2回答

11579閲覧

C# XMLファイルからタグ名を取得する方法

doro-ro

総合スコア12

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

0グッド

1クリップ

投稿2020/03/28 02:21

編集2020/03/28 04:17

前提・実現したいこと

C#でXMLファイルを取得し、タグ名を取得したい。
私の会社で、ソースのバージョン管理をXMLでしています。
自動作成で作成されるものです。
このxmlファイルの一番上部のタグ名を取得して使いたいのですが
やり方がわかりません。
xmlファイルを読み込んで、『ver1.0.0.1』を取得出来るようにしたいです。
書いてみたのですが、ルート名取得しか出来ませんでした。
ご教授よろしくお願いします。

該当のソースファイル

public void SoftVer() { string path = System.Windows.Forms.Application.ExecutablePath; string projectName = System.IO.Path.GetFileNameWithoutExtension(path); string XmlSoftVer = @"..\Data\softver" + "_" + projectName + ".xml"; XmlDocument xmlDoc = new XmlDocument(); // XmlDocumentオブジェクトを作成 xmlDoc.Load(XmlSoftVer); XmlElement xmlRoot = xmlDoc.DocumentElement; MessageBox.Show(xmlRoot.Name); }

該当のXMLファイル

softver.xml <?xml version="1.0" encoding="shift_jis"?> <softver> <ver1.0.0.1>          ←ここを取得したい。 <作成者>田中太郎</作成者> <作成日>2019/02/10</作成日> <内容>こうした。ああした</内容> </ver1.0.0.1> <ver1.0.0.0> <作成者>大野清太郎</作成者> <作成日>2019/01/22</作成日> <内容>ああしてこうした。疲れた。</内容> </ver1.0.0.0> </softver>

補足情報(FW/ツールのバージョンなど)¥

・Microsoft Visual Studio Professional 2019 Version 16.4.5
・Windows 10 64bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hihijiji

2020/03/28 02:28 編集

丸投げの質問は推奨されていません。 自分で書いたコードを提示して、不明な点を質問するようにしましょう。
hihijiji

2020/03/28 02:29

それと</ver1.0.0.>の0が抜けてます。
Zuishin

2020/03/28 02:52

こういうときは「C# xml」で調べます。するとすぐに LINQ to XML がみつかると思います。
doro-ro

2020/03/28 03:33

申し訳ありません。 また、調べてみたのですが要素などはすぐに見つかるのですが、タグ名事態を取得することは出来ませんでした。 途中までですが、自分が書いたコードを示すのでお願いします。
guest

回答2

0

自己解決

以下で解決しました。

string path = System.Windows.Forms.Application.ExecutablePath;
string projectName = System.IO.Path.GetFileNameWithoutExtension(path);

string XmlSoftVer = @"..\Data\softver" + "_" + projectName + ".xml"; XmlDocument xmlDoc = new XmlDocument(); // XmlDocumentオブジェクトを作成 xmlDoc.Load(XmlSoftVer); XmlElement xmlRoot = xmlDoc.DocumentElement; XmlNode xmlChild = xmlRoot.FirstChild; MessageBox.Show(xmlChild.Name);

C#を初めて半年以下ですが、正直ここまでお叱りを受けるとは思いませんでした。
反省します。
ただ何も調べずにここで丸投げしたわけではありません。
調べても調べても出てこなかったので、ここで質問させていただきました。
なのに、簡単に否定されて悲しかったです。

投稿2020/03/28 05:59

doro-ro

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/28 06:05

調べても調べても出てこなかったことが解決できたんでしょ? 調べ方を教えてもらったとは考えられませんか?
Zuishin

2020/03/28 06:23 編集

私は何もわからない状態から数分で調べられる方法を書いた。 するとあなたは「それはもうやったがタグ名がわからない」と言った。だから私はタグ名を取得するプロパティとサンプルコードの載っているページを紹介した。 なぜお礼ではなくディスられているのですか? あなたは何をどのように調べたか書かなかった。だから私はあなたが何をどのように調べたか知らない。それを知っとけと?
len_souko

2020/03/28 08:45

> このxmlファイルの一番上部のタグ名を取得して使いたいのですが > やり方がわかりません。 > xmlファイルを読み込んで、『ver1.0.0.1』を取得出来るようにしたいです。 > 書いてみたのですが、ルート名取得しか出来ませんでした。 この文章を見ただけで > ただ何も調べずにここで丸投げしたわけではありません。 > 調べても調べても出てこなかったので、ここで質問させていただきました。 ということが見ず知らずの人にわかると思いますか? あなたと一緒にお仕事をしている人ならばあなたが調べていることも気づいているかもしれませんが、一緒に仕事をしている人であっても気づけないかもしれません それなの位ネットで質問した不特定多数の人があなたのリアルでどんなことをしていたかなんてわかる手段はありません なので、teratailのヘルプにも以下の通りに記述されています https://teratail.com/help/question-tips > 3. 正しく伝わる質問の仕方 > 人に何かを尋ねるときは、質問内容と回答に必要な情報を正しく伝える必要があります。 > 「もし自分がおなじ質問をされて、答える立場になったら」ということを考えて質問をしましょう。 > 「作ってみたがうまく行かず、解決方法を調べたが理解できない」のであれば、 > 何をどのように作ってどうなったかを説明し、調べた解決方法とその内容及びどこが理解できないのかを順を追って伝える必要があります。 と明記されています 例えば僕が「のどが渇いたけど飲み物を飲もうと思ったけど無理でした、助けてください」と書いてあなたには僕がなぜ無理だったのかわかりますか? 出先で水を飲めるような場所がなく財布も落としてしまって飲み物が買えないかもしれませんし、大やけどを負って死にかけているかもしれません。家にいるけど水道代を払っていなくて水が止まっているかもしれません。 ですがどんな状況化も書かないままであなたは僕の状況を把握して正しく回答を書けますか? あなたのこの回答にある頑張って調べたのにみんなひどいという書き込みはそれと同じことです、説明がなければ知るはずもないことを知らないなんてひどいと言ってるようなものです。 C#を始めて半年とか関係ありません。こちらに提示されていない情報はこちらにはわかりません。ただそれだけです
guest

0

そもそも"ver1.0.0.1"ってのはタグ名にふさわしくないよね、これ自体値を示すものだから
"item"(とりあえずで使う感じ)や"history"などのタグにして"作成者"と同階層に"Version"などのタグを追加してその値に"1.0.0.1"って入れるべきだよね
構造的にも<softver>タグの中にリストを用意するって形なのにそのリストアイテムのタグが全部違うなんてXMLは見たことがない
C#でList<T>で考えてみたらおかしいことが分かる

C#

1 2List<object> softver = new List<object> 3{ 4 new ver1_0_0_1{作成者 = "田中太郎", 作成日 = "2019/02/10", 内容 = "こうした。ああした"}, 5 new ver1_0_0_0{作成者 = "大野清太郎", 作成日 = "2019/01/22", 内容 = "ああしてこうした。疲れた。"}, 6}; 7

こんなの使い物になるわけがない
普通ならこんな感じにする(class名はほぼXMLからのコピペ)

C#

1 2List<Ver> softver = new List<Ver> 3{ 4 new Ver{ver = "1.0.0.1", 作成者 = "田中太郎", 作成日 = "2019/02/10", 内容 = "こうした。ああした"}, 5 new Ver{ver = "1.0.0.0", 作成者 = "大野清太郎", 作成日 = "2019/01/22", 内容 = "ああしてこうした。疲れた。"}, 6}; 7

私の会社で、ソースのバージョン管理をXMLでしています。

自動作成で作成されるものです。

とあるので、質問文にあるXMLを自動生成するシステムがおかしい

投稿2020/03/28 04:25

len_souko

総合スコア1363

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doro-ro

2020/03/28 05:54

確かに言われてみれば槽かもしれません。元の部分を直すことも考慮したいと思います。アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問