2013-09-04 11 views
15

Sto cercando di aprire un XmlDocument in questo modo:xml: caratteri di spazio non bianco non può essere aggiunto al contenuto

var doc = new XDocument("c:\\temp\\contacts.xml"); 
var reader = doc.CreateReader(); 
var namespaceManager = new XmlNamespaceManager(reader.NameTable); 
namespaceManager.AddNamespace("g", g.NamespaceName); 
var node = doc.XPathSelectElement("/Contacts/Contact/g:Name[text()='Patrick Hines']", namespaceManager); 
node.Value = "new name Richard"; 
doc.Save("c:\\temp\\newcontacts.xml"); 

mi restituisce un errore nella prima riga:

Non whitespace characters cannot be added to content. 

Il XMLFILE assomiglia a questo:

<?xml version="1.0" encoding="utf-8"?> 
<Contacts xmlns:g="http://something.com"> 
    <Contact> 
    <g:Name>Patrick Hines</g:Name> 
    <Phone>206-555-0144</Phone> 
    <Address> 
     <street>this street</street> 
    </Address> 
    </Contact> 
</Contacts> 

risposta

38

sembra che si sta tentando di caricare un file XML in un XDocument, ma per farlo è necessario cal l XDocument.Load("C:\\temp\\contacts.xml"); - non è possibile passare un file XML nel costruttore.

È anche possibile caricare una stringa di XML con XDocument.Parse(stringXml);.

Cambiare la prima linea a:

var doc = XDocument.Load("c:\\temp\\contacts.xml"); 

E funzionerà.

Per riferimento, ci sono 4 overload del costruttore XDocument:

XDocument(); 
XDocument(Object[]); 
XDocument(XDocument); 
XDocument(XDeclaration, Object[]); 

Potreste aver pensato della terza (XDocument(XDocument)), ma per usare quella che avrebbe dovuto scrivere:

var doc = new XDocument(XDocument.Load("c:\\temp\\contacts.xml")); 

Quale sarebbe ridondante quando var doc = XDocument.Load("c:\\temp\\contacts.xml"); sarà sufficiente.

Vedere XDocument Constructor per i dettagli grintosi.

0
XDocument xdoc=XDocument.load(path) 
0

Usa XDocument.Parse (stringxml)

Problemi correlati