Essayez quelque chose comme ça - la première méthode chargera la chaîne XML à partir de la base de données (ajuster la chaîne de connexion et requête à votre base de données, serveur, table, noms de colonnes), et la seconde méthode analyser la chaîne XML chargée de la base de données dans une liste de noms d'attributs en fonction de la réponse que vous avez à votre question précédente:
static void Main(string[] args)
{
string xmlContent = GrabStringFromDatabase(1);
List<string> attributeNames = ParseForAttributeNames(xmlContent);
Console.WriteLine("Your XML attributes are: {0}", string.Join(",", attributeNames.ToArray()));
}
private static string GrabStringFromDatabase(int ID)
{
string result = string.Empty;
string connection = "server=(local);database=test;integrated security=SSPI";
string query = "SELECT XmlContent FROM dbo.TestXml WHERE ID = @ID";
using(SqlConnection _con = new SqlConnection(connection))
using (SqlCommand _cmd = new SqlCommand(query, _con))
{
_cmd.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
_con.Open();
result = _cmd.ExecuteScalar().ToString();
_con.Close();
}
return result;
}
private static List<string> ParseForAttributeNames(string xmlContent)
{
List<string> attributeNames = new List<string>();
XDocument xmlDoc = XDocument.Parse(xmlContent);
var nodeAttrs = xmlDoc.Descendants().Select(x => x.Attributes());
foreach (var attrs in nodeAttrs)
{
foreach (var attr in attrs)
{
attributeNames.Add(attr.Name.LocalName);
}
}
return attributeNames;
}
avez pas vous juste demandé celui-ci avant? http://stackoverflow.com/questions/4237327/getting-attributes-and-values-of-xml-using-c –
oui mais ce n'était pas la réponse exacte qui m'aide ... j'espère pouvoir le préciser – salman
Salman votre Xml n'est pas au format correct, '' devrait être à la fin, Vous pouvez ignorer 'attr.Value' dans le code que j'ai posté pour vous, si vous résolvez votre problème xml actuel, vous obtiendrez' ba, bb , bc, bd' aussi vous devriez supprimer les sorties supplémentaires. –