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

  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • CNET

    CNET

    5 Mayıs 2006
  • Blu animations and other videos

    Blu animatio

    15 HAZİRAN 2007