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

  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • Vsauce

    Vsauce

    30 Temmuz 2007