これは私のコードです。このようなXMLファイルから読み取るしようとしてgetElementsByTagNameのは、最初のノード(たXMLDocument)を取得
FileInfo[] Files = difo.GetFiles("*.xml");
string[] parts;
string[] FileSearchRes = Directory.GetFiles(@"C:\Users\ahodhv\Perforce\ahodhv_RD0029717_1921\prod\delivery\q_rec\int_test\SOPS", "*.xml", SearchOption.AllDirectories);
int i = 0;
foreach (FileInfo File in Files)
{
parts = File.Name.Split('_');
boxvehicles.Items.Add(parts[0]);
string test = FileSearchRes[i];
doc.Load(FileSearchRes[i]);
List<string> name = new List<string>();
var accountNodes = doc.GetElementsByTagName("FpcBlock");
for (int j = 0; j < accountNodes.Count; j++)
{
var account = accountNodes[j].SelectSingleNode("./FPC");
if (account != null && account.Attributes != null)
{
// Read node attribute
name.Add(account.Attributes["Name"].Value + account.Attributes["Value"].Value);
}
}
i++;
}
イム:
<FpcBlock Version="01">
<FPC Name="1" Value="A" Updated="false" />
<FPC Name="3" Value="B" Updated="false" />
<FPC Name="5" Value="B" Updated="false" />
<FPC Name="8" Value="B" Updated="false" />
<FPC Name="10" Value="B" Updated="false" />
</FpcBlock>
問題はラインにあります:
var accountNodes = doc.GetElementsByTagName("FpcBlock");
accountnodesには、より多くのノードが存在するため、カウント1が正しくありません。そのため、最初のノードのみが名前に追加されます。何が間違っているのですか?
編集:私が混乱していたら申し訳ありません。すべての行をリストの下に保存したいと思います。私が望むのは、このリストは次のようなものでなければならないということです。
などです。だから私は名前と値を保存します。しかし、現時点では、最初の行は1Aだけです。
EDIT nr 2: 私はGetElementsByTagName()
メソッドを誤解しました。 GetElementsByTagName("FPC")
に変更すると問題になるはずです。
あなたのXMLには* FpcBlockという要素が1つしかありません。なぜあなたが1つだけ*あるときに複数のものを取るべきだと思うのかははっきりしない。あなたの例は不完全ですか? –
私はちょっと混乱していたようです。私はの下に書かれたすべてを欲しいと思います。だから私はすべての5行をその下にしたいです –
なぜ 'GetElementsByTagName(" FPC ")'、彼らはあなたが実際にしたいものだと思う? –