Sono nuovo a lavorare con XML e ho riscontrato uno strano problema durante il tentativo di ottenere un tag specifico da un file di configurazione di spring.net. Dopo aver cercato di circoscrivere il problema con un file XML di test, ho scoperto che applicando il codice seguente:Impossibile utilizzare Descendants() o Elements() con xmlns
List<XElement> nodes = xmlFile.Descendants("B").ToList();
fornisce una lista non vuota con il seguente file:
<?xml version="1.0" encoding="utf-8" ?>
<A fakeAttribute="aaa">
<B id="DbProvider"/>
</A>
ma fornisce un stringa vuota con il seguente file:
<?xml version="1.0" encoding="utf-8" ?>
<A xmlns="aaa">
<B id="DbProvider"/>
</A>
L'unica differenza tra i file è l'attributo.
Non riesco a immaginare una spiegazione per questo. Grazie per l'aiuto.
Grazie! Questo ha fatto il trucco, ma ha anche aperto la strada a un altro problema. Posso ottenere discendenti chiamati "B", ad esempio, ma non posso ottenere discendenti con il nome "db: provider" (non usando "db" né "db: provider"), che è purtroppo esattamente quello che devo fare. – Tomata
db è elencato come spazio dei nomi diverso. Colpa mia. – Tomata
@Tomata Se si desidera ignorare i namespace, è possibile scrivere qualcosa come: 'var lst = doc.Descendants(). Where (p => p.Name.LocalName ==" B "). ToList();' – xanatos