1 pièce(s) jointe(s)
XML encapsulé dans du XML
Bonjour à tous,
J'ai un souci de récupération de données XML.
En effet, ma base de données (que je ne maîtrise pas) stocke des informations en XML. Les informations sur lesquelles je dois travailler sont "encapsulées" dans ce XML, toujours au format XML.
J'ai "décode" le XML afin de le rendre consultable et "propre", à savoir que tous les termes non gérés (<, > ...) ont été "convertis" part la méthode HttpUtility.HtmlDecode().
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| protected void Page_Load(object sender, EventArgs e)
{
try
{
SqlCommand cmd = new SqlCommand(query, connection);
connection.Open();
SqlDataReader sdr = cmd.ExecuteReader();
XmlDocument doc = new XmlDocument();
if(sdr.HasRows)
{
while(sdr.Read())
{
string content = sdr["Content"].ToString();
System.Diagnostics.Debug.WriteLine(System.Web.HttpUtility.HtmlDecode(content));
// Test Decode
string contenu = System.Web.HttpUtility.HtmlDecode(content);
doc.Load(contenu);
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode FormId;
FormId = doc.SelectSingleNode("descendant::StorageObject/Properties/Property/Template/Property[attribute::Name='FormId']", ns);
System.Diagnostics.Debug.WriteLine(FormId.OuterXml);
}
}
}
finally
{
connection.Close();
}
} |
Je me teste sur le XPATH, afin de naviguer dans les noeuds, pour apprendre à le maîtriser, mais j'ai un message d'erreur :
Pièce jointe 340503
Je ne sais pas si c'est mon code qui ne va pas ( problème avec le "doc" ?), ou si c'est l'encapsulation qui pose problème.
Voici l'encapsulation en question (je ne vous mets pa tout le code, car il est très long) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <Root>
<StorageObject Name="OI-GENOUILLERE ODRA-v2" Id="0108f7ac-7853-4543-8ec4-a04cb755ed46" Type="Adviser.Proteor.Library.TemplateImpl">
<Properties>
<Property Name="TimeCreated" Value="27/07/2017 11:14:18" /><Property Name="Enabled" Value="True" /><Property Name="TimePublished" Value="01/01/0001 00:00:00" /><Property Name="TimeLastModified" Value="10/11/2017 09:09:29" /><Property Name="Description" Value="" /><Property Name="ObjectContent" Value=""<Template>
<Component Type="Adviser.Proteor.Library.TemplateImpl">
<ExtendedProperty Text="OI" Key="Classification" />
<ExtendedProperty Text="35176af2-b664-42d6-a7ba-5d06602b0500" Key="ClassificationId" />
<ExtendedProperty Text="GAO" Key="Activity" />
<ExtendedProperty Text="58d942ea-8cf7-4089-879c-f8633925473b" Key="ActivityId" />
<ExtendedProperty Text="OI 36" Key="AnatomicalLevel" />
<ExtendedProperty Text="76418da5-6830-4a49-aed0-b472c11c67c6" Key="AnatomicalLevelId" />
<ExtendedProperty Text="ORTHESE INF." Key="Type" />
<ExtendedProperty Text="13b33a27-57ce-4009-8812-00f8578982fd" Key="TypeId" />
<Version Version.Major="0" Version.Minor="1" /> |
à partir de la balise <Property Name="ObjectContent">, la balise n'est pas fermée après le Value (en gras), et ensuite ça repart sur une autre balise (d'où l'encapsulation).
Need help !!!!