2016-03-22 20 views
0

döndürmez Ben XDocument C# ile çalışmayı deneyin, ancak istenen öğeleri almak için bazı sorunlar yaşıyorum. İşte XDocument ile alan değerleri ayıklamak istediğiniz verilen XML varsayarsak benim örnek xmlXDocument beklenen düğümü

<?xml version="1.0" encoding="UTF-8"?> 
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"> 
    <f href="@{pdffile}"/> 
    <ids modified="BF43C70442ECB74FA49833BBA44D4679" original="B4870CC046121A41B7D8F0838C87256D"/> 
    <fields> 
    <field name="FormInstanceID"><value>@{instanceid}</value></field> 
    <field name="meta_7"><value>@{meta_7}</value></field> 
    <field name="meta_6"><value>@{meta_6}</value></field> 
    <field name="meta_8"><value>@{meta_8}</value></field> 
    <field name="meta_3"><value>@{meta_3}</value></field> 
    <field name="meta_2"><value>@{meta_2}</value></field> 
    <field name="meta_5"><value>@{meta_5}</value></field> 
    <field name="meta_4"><value>@{meta_4}</value></field> 
    <field name="meta_1"><value>@{meta_1}</value></field> 
    <field name="tag_5"><value>@{tag_5}</value></field> 
    <field name="tag_1"><value>@{tag_1}</value></field> 
    <field name="tag_2"><value>@{tag_2}</value></field> 
    <field name="tag_3"><value>@{tag_3}</value></field> 
    <field name="TAGS"><value>@{TAGS}</value></field> 
    <field name="tag_4"><value>@{tag_4}</value></field> 
    <field name="qr"><value>@{qr}</value></field> 
    <field name="metadata"><value>@{metadata}</value></field> 
    <field name="pdx.dynform.email"><value>@{pdx.dynform.email}</value></field> 
    </fields> 
</xfdf> 

olduğunu. Şu anda bu yaklaşımı

XDocument xfdfData = XDocument.Load(xfdf); 
var result = xfdfData.Descendants("fields"); 

dosyası başarılı xfdfData nesnesine yüklenen ancak Descendants ("alanlar") herhangi düğümleri görmesine kullanarak herhangi girebilirler hiçbir yoktur.

+1

Dene: xfdfData.Root.Descendants ("alanları"); – Kevin

+0

@Kevin: Hayır, yardım etmeyecek. Sorun isim veriyor. –

cevap

1

Ad alanı içinde olmayan bir fields öğeniz yok, bu da sizin için soruyor. Nedeniyle kök öğesindeki bu kadar:

xmlns="http://ns.adobe.com/xfdf/" 

... soyundan düğümleri için varsayılan ad alanı URI http://ns.adobe.com/xfdf/ olduğunu. Yani istiyorum:

XNamespace ns = "http://ns.adobe.com/xfdf/"; 
XDocument doc= XDocument.Load(xfdf); 
var result = doc.Descendants(ns + "fields"); 

Ya field elemanlarını kendilerini bulmak için:

XNamespace ns = "http://ns.adobe.com/xfdf/"; 
XDocument doc= XDocument.Load(xfdf); 
var fields = doc.Descendants(ns + "field");