C#使用字典为SOAP信封赋值?
我觉得这可能是一个非常基本的问题,但我不熟悉SOAP及其相关的名称空间等,所以这里是: 我有一个SOAP请求,看起来像(为了简洁起见,对完整请求进行了删节):C#使用字典为SOAP信封赋值?,c#,soap,C#,Soap,我觉得这可能是一个非常基本的问题,但我不熟悉SOAP及其相关的名称空间等,所以这里是: 我有一个SOAP请求,看起来像(为了简洁起见,对完整请求进行了删节): 这些元素的值将从app.config和用户在表单上输入的内容的组合中提取,我认为字典将是将值分配给元素的最直接的方法 这是我的问题;当“forwardToVoiceMail”和“secondaryCallingSearchSpaceName”元素可能有不同的值时,如何为它们赋值?我的意思是,字典只有两个维度,键和值,所以字典中不能有c
这些元素的值将从app.config和用户在表单上输入的内容的组合中提取,我认为字典将是将值分配给元素的最直接的方法
这是我的问题;当“forwardToVoiceMail”和“secondaryCallingSearchSpaceName”元素可能有不同的值时,如何为它们赋值?我的意思是,字典只有两个维度,键和值,所以字典中不能有callForwardAll\forwardToVoiceMail,true
和callForwardBusy\forwardToVoiceMail,false
如有任何帮助/建议,将不胜感激 像您提到的那样,XML类似于分层数据结构,要将其与词典联系起来似乎很麻烦。另一种方法是创建类似于XML布局的类。所以你要创造:
` public class ClassForward
bool ForwardToVoiceMail;
GUID callingSearchSpaceName;
GUID secondaryCallingSearchSpaceName;
string Destination;
end;
public class Line
string pattern;
string description;
ClassForward callForwardAll;
ClassForward callForwardBusy;
ClassForward callForwardBusyInt;
...
`
然后在内存中使用XmlTextWriter和XmlTextReader进行保存和读取,方法如下:
StringBuilder builder = new StringBuilder();
XmlWriter writer = XmlWriter.Create(builder, new XmlWriterSettings()));
SaveLines(ref writer, Lines);
其中:
public void SaveLines(ref XmlTextWriter writer, List<Line> myLines)
{
foreach(Line line in MyLines)
{
writer.WriteStartElement("line");
writer.Add(new XElement("pattern", line.pattern));
writer.Add(new XElement("description", line.description));
writert.Add(new XElement("CallForwardAll",
new XElement("forwardToVoiceMail", line.forwardToVoiceMail));
public void存储行(ref XmlTextWriter writer,List myline)
{
foreach(myline中的行)
{
writer.writeStarteElement(“行”);
writer.Add(新的XElement(“pattern”,line.pattern));
writer.Add(新的XElement(“description”,line.description));
添加(新的XElement(“CallForwardAll”),
新的XElement(“forwardToVoiceMail”,line.forwardToVoiceMail));
。。。
}
你明白了。或者你可以用适当的属性修饰类,只使用XmlSerializer而不是你正在做的自定义xml生成。
public void SaveLines(ref XmlTextWriter writer, List<Line> myLines)
{
foreach(Line line in MyLines)
{
writer.WriteStartElement("line");
writer.Add(new XElement("pattern", line.pattern));
writer.Add(new XElement("description", line.description));
writert.Add(new XElement("CallForwardAll",
new XElement("forwardToVoiceMail", line.forwardToVoiceMail));