Có cách nào để tìm kiếm một XDocument mà không biết không gian tên không? Tôi có một quá 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ư thế, cho tôi tất cả các yếu tố mà tên là CreditCard. Tôi không quan tâm không gian tên là gì.Tìm kiếm XDocument sử dụng LINQ mà không biết không gian tên
Sự cố của tôi dường như là với LINQ và yêu cầu không gian tên xml.
Tôi có các quy trình khác lấy giá trị từ XML, nhưng tôi biết không gian tên cho các quá 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 biết về không gian tên, một cái gì đó như thế này:
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == "CreditCardNumber")
này sẽ không làm việc vì tôi không biết không gian tên trước tại thời gian biên dịch.
Làm cách nào để thực hiện điều này?
<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>
...
Xem câu trả lời này từ một câu hỏi khác: http://stackoverflow.com/questions/934486/how-do-i-get-a-nametable-from-an-xdocument/3977823#3977823 – MonkeyWrench