네임 스페이스를 모르고 XDocument를 검색하는 방법이 있습니까? 모든 SOAP 요청을 기록하고 민감한 데이터를 암호화하는 프로세스가 있습니다. 이름을 기준으로 요소를 찾고 싶습니다. 이름이 CreditCard 인 모든 요소를 제공합니다. 나는 네임 스페이스가 무엇인지 상관하지 않습니다.
내 문제는 LINQ에 있고 xml 네임 스페이스가 필요한 것 같습니다.
XML에서 값을 검색하는 다른 프로세스가 있지만 이러한 다른 프로세스의 네임 스페이스를 알고 있습니다.
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");
다음과 같이 네임 스페이스에 대해 몰라도 xml을 검색 할 수있는 기능을 갖고 싶습니다.
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == "CreditCardNumber")
컴파일 타임에 네임 스페이스를 미리 알지 못하기 때문에 작동하지 않습니다.
어떻게 할 수 있습니까?
<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>
...