2013-09-04 33 views
15

Tôi cố gắng để mở một XmlDocument như thế này:xml lỗi: ký tự khoảng trắng Non không thể được thêm vào nội dung

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

Tôi trả về một lỗi trong dòng đầu tiên:

Non whitespace characters cannot be added to content. 

Các xmlFile trông giống như sau:

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

Trả lời

38

Có vẻ như bạn đang cố gắng tải tệp XML vào XDocument, nhưng để làm như vậy bạn cần phải cal l XDocument.Load("C:\\temp\\contacts.xml"); - bạn không thể chuyển một tệp XML vào hàm tạo.

Bạn cũng có thể tải một chuỗi XML với XDocument.Parse(stringXml);.

Thay đổi dòng đầu tiên của bạn đến:

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

Và nó sẽ làm việc.

Để tham khảo, có 4 quá tải của các nhà xây dựng XDocument:

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

Bạn có thể đã suy nghĩ của một phần ba (XDocument(XDocument)), nhưng sử dụng một mà bạn muốn đã viết:

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

Điều gì sẽ dư thừa khi var doc = XDocument.Load("c:\\temp\\contacts.xml"); đủ.

Xem XDocument Constructor để biết chi tiết về chi tiết.

0
XDocument xdoc=XDocument.load(path) 
0

Sử dụng XDocument.Parse (stringxml)

Các vấn đề liên quan