Có cách nào để tìm kiếm XDocument mà không cần biết không gian tên không? Tôi có một quy trình ghi lại tất cả các yêu cầu SOAP và mã hóa dữ liệu nhạy cảm. Tôi muốn tìm bất kỳ yếu tố nào dựa trên tên. Một cái gì đó như, cung cấp cho tôi tất cả các yếu tố có tên là CreditCard. Tôi không quan tâm không gian tên là gì.
Vấn đề của tôi dường như là với LINQ và yêu cầu một không gian tên xml.
Tôi có các quy trình khác truy xuất giá trị từ XML, nhưng tôi biết không gian tên cho quy trình khác này.
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");
Tôi thực sự muốn có khả năng tìm kiếm xml mà không cần biết về không gian tên, đại loại như sau:
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == "CreditCardNumber")
Điều này sẽ không hoạt động vì tôi không biết trước không gian tên tại thời điểm biên dịch.
Điều này có thể giải quyết như thế nào?
<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>
...