C# 用c语言解析动态创建的XML文档#
我必须像这样解析XML文档:C# 用c语言解析动态创建的XML文档#,c#,xml-parsing,linq-to-xml,C#,Xml Parsing,Linq To Xml,我必须像这样解析XML文档: <?xml version="1.0" encoding="utf-8" ?> <DialsList> <Dial> <Id>123</Id> <Source>SQL</Source> <Server>myServer</Server> <Database>
<?xml version="1.0" encoding="utf-8" ?>
<DialsList>
<Dial>
<Id>123</Id>
<Source>SQL</Source>
<Server>myServer</Server>
<Database>myDB</Database>
<UserName>myUserName</UserName>
<Password>myPassword</Password>
<TableName>myTable</TableName>
<Query>GetAvgForUser</Query>
<Parameters>
<Param1>
<Name>@DialId</Name>
<Type>Int</Type>
</Param1>
<Param2>
<Name>@UserId</Name>
<Type>String</Type>
</Param2>
</Parameters>
</Dial>
<Dial>
<Id>789</Id>
<Source>SQL</Source>
<Server>someServer</Server>
<Database>someDB</Database>
<UserName>someUser</UserName>
<Password>somePwd</Password>
<TableName>someTbl</TableName>
<Query>someQry</Query>
<Parameters>
<Param1>
<Name>@myParam</Name>
<Type>Int</Type>
</Param1>
<Param2>
<Name>@anotherParam</Name>
<Type>String</Type>
</Param2>
</Parameters>
</Dial>
</DialsList>
然后形成连接字符串并执行存储过程。
当它是动态的时,我该如何处理它呢?我不知道dialDataSrc的类型,但这应该会帮助您:
var listOfparameters = DialsDoc
.Element("Parameters")
.Elements()
.Select(p => MyCreateParam((string) p.Element("Name"), (string) p.Element("Type")))
.ToList();
使用一个小助手方法来计算DbType等:
private SqlParameter MyCreateParam(string name, string _type) { ... }
谢谢,我已经添加了helper方法。但是,我现在收到一条错误消息:“System.Data.SqlClient.SqlParameter不包含'ToList'的定义,并且没有扩展方法'ToList'在“.ToList()”中接受类型为……”的第一个参数。是否检查了元素和元素?ToList的arg应该是一个IEnumerable。显然,“Select”结尾缺少一个“')”。
private SqlParameter MyCreateParam(string name, string _type) { ... }