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

  • Associated Press

    Associated P

    18 EYLÜL 2006
  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • george sarintzotis

    george sarin

    2 Aralık 2007