Gibt es eine Möglichkeit, ein XDocument zu durchsuchen, ohne den Namespace zu kennen? Ich habe einen Prozess, der alle SOAP-Anforderungen protokolliert und die vertraulichen Daten verschlüsselt. Ich möchte alle Elemente finden, die auf dem Namen basieren. Geben Sie mir alle Elemente, bei denen der Name CreditCard lautet. Es ist mir egal, was der Namespace ist.
Mein Problem scheint mit LINQ zu sein und einen XML-Namespace zu erfordern.
Ich habe andere Prozesse, die Werte aus XML abrufen, aber ich kenne den Namespace für diese anderen Prozesse.
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");
Ich möchte wirklich die Möglichkeit haben, XML zu durchsuchen, ohne etwas über Namespaces zu wissen.
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == "CreditCardNumber")
Dies funktioniert nicht, da ich den Namespace zur Kompilierungszeit nicht vorher kenne.
Wie kann das gemacht werden?
<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>
...