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

  • mist64

    mist64

    30 Mayıs 2006
  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011