2013-09-04 19 views
15

Próbuję otworzyć XmlDocument takiego:xml: Non białe znaki nie mogą być dodawane do treści

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"); 

I zwraca błąd w pierwszej linii:

Non whitespace characters cannot be added to content. 

xmlfile wygląda tak:

<?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> 

Odpowiedz

38

Wygląda na to, że próbujesz wczytać plik XML do XDocument, ale musisz to zrobić l XDocument.Load("C:\\temp\\contacts.xml"); - nie można przekazać pliku XML do konstruktora.

Możesz także załadować ciąg XML z XDocument.Parse(stringXml);.

Zmień swoją pierwszą linię do:

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

i będzie działać.

Dla porównania, istnieją 4 przeciążeń konstruktora XDocument:

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

Można które zostały myśli o trzecim (XDocument(XDocument)), ale do korzystania z tego jednego trzeba by napisać:

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

Co byłoby zbędne, gdy wystarczy var doc = XDocument.Load("c:\\temp\\contacts.xml");.

Aby uzyskać szczegółowe informacje, patrz XDocument Constructor.

0
XDocument xdoc=XDocument.load(path) 
0

Zastosowanie XDocument.Parse (stringxml)

Powiązane problemy