SORU
9 NİSAN 2010, Cuma


Arama ad bilmeden ETMENİZ kullanarak XDocument

Bir şekilde ad bilmeden bir XDocument arama var mı? Tüm SOAP istekleri açan bir süreç var ve hassas verileri şifreler. Herhangi bir öğe adına göre bulmak istiyorum. Gibi bir şey, bana adını, kredi kartı nerede tüm öğeleri ver. Ad ne olduğu umurumda değil.

Benim sorunum ETMENİZ ve xml ad alanı gerektiriyor gibi görünüyor.

XML değerleri almak başka işler var, ama bu başka bir işlem için Ad biliyorum.

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");

Gerçekten ad, böyle bir şey hakkında bilmeden xml arama yeteneğine sahip olmak istiyorum:

XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
                        .DescendantsAndSelf()
                        .Elements()
                        .Where(d => d.Name == "CreditCardNumber")

Bu ad bilmiyorum çünkü önceden derleme zamanı değil.

Bu nasıl yapılabilir?

<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>      
        ...

CEVAP
8 EKİM 2011, CUMARTESİ


Kök-öğe: ad alabilirsin

XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var ns = xDocument.Root.Name.Namespace;

Şimdi istenen tüm öğeleri kolayca artı-operatör kullanarak alabilirsiniz:

root.Elements(ns   "CreditCardNumber")

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3biblecom

    3biblecom

    23 NİSAN 2011
  • ElChakotay Andrich

    ElChakotay A

    10 EKİM 2013
  • fast2hell

    fast2hell

    16 AĞUSTOS 2006