Existe-t-il un moyen d'effectuer une recherche dans un XDocument sans connaître l'espace de noms ? J'ai un processus qui enregistre toutes les demandes SOAP et crypte les données sensibles. Je veux trouver tous les éléments basés sur le nom. Quelque chose comme : donnez-moi tous les éléments dont le nom est CreditCard. Je ne me soucie pas de l'espace de noms.
Mon problème semble être lié à LINQ et à la nécessité d'un espace de nom xml.
J'ai d'autres processus qui récupèrent des valeurs à partir de XML, mais je connais l'espace de nom de ces autres processus.
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
XNamespace xNamespace = "http://CompanyName.AppName.Service.Contracts";
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == xNamespace + "CreditCardNumber");
Je veux vraiment avoir la possibilité de rechercher du xml sans connaître les espaces de noms, quelque chose comme ceci :
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == "CreditCardNumber")
Cela ne fonctionnera pas car je ne connais pas l'espace de noms au préalable lors de la compilation.
Comment cela peut-il être fait ?
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Request xmlns="http://CompanyName.AppName.Service.ContractA">
<Person>
<CreditCardNumber>83838</CreditCardNumber>
<FirstName>Tom</FirstName>
<LastName>Jackson</LastName>
</Person>
<Person>
<CreditCardNumber>789875</CreditCardNumber>
<FirstName>Chris</FirstName>
<LastName>Smith</LastName>
</Person>
...
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Request xmlns="http://CompanyName.AppName.Service.ContractsB">
<Transaction>
<CreditCardNumber>83838</CreditCardNumber>
<TransactionID>64588</FirstName>
</Transaction>
...