私はこのxmlを持っています:
<?xml version="1.0" encoding="utf-8" ?>
<Interfaces>
<Interface>
<Name>Account Lookup</Name>
<PossibleResponses>
<Response>Account OK to process</Response>
<Response>Overridable restriction</Response>
</PossibleResponses>
</Interface>
<Interface>
<Name>Balance Inquiry</Name>
<PossibleResponses>
<Response>Funds available</Response>
<Response>No funds</Response>
</PossibleResponses>
</Interface>
</Interfaces>
インターフェイスの可能な応答を取得する必要があります。
// Object was loaded with XML beforehand
public class Interfaces : XElement {
public List<string> GetActionsForInterface(string interfaceName) {
List<string> actionList = new List<string>();
var actions = from i in this.Elements("Interface")
where i.Element("Name").Value == interfaceName
select i.Element("PossibleResponses").Element("Response").Value;
foreach (var action in actions)
actionList.Add(action);
return actionList;
}
}
結果は次のようなリストになるはずです (インターフェイス 'Account Lookup' の場合):
Account OK to process
Overridable 制限
しかし、最初の値「Account OK to process」のみを返します。ここで何が問題なのですか?
編集:
方法を変更しました:
public List<string> GetActionsForInterface(string interfaceName) {
List<string> actionList = new List<string>();
var actions = from i in this.Elements("interface")
where i.Element("name").Value == interfaceName
select i.Element("possibleresponses").Elements("response").Select(X => X.Value);
foreach (var action in actions)
actionList.Add(action);
return actionList;
}
しかし、「actionList.Add(action);」行で 2 つのエラーが発生しました。
The best overloaded method match for System.Collections.Generic.List<string>.Add(string)' has some invalid arguments
Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<char>' to 'string'
多くの選択が結果を文字列以外のものにキャストしていると思いますか?
編集:
最後のエラーを修正するには:
foreach (var actions in query)
foreach(string action in actions)
actionList.Add(action);
どうやらここには配列内に配列があるようです。