2014-05-16 14 views
25

Tôi đang cố tạo phần tử xml sau bằng C#.Tiền tố "không thể được định nghĩa lại từ" thành <url> trong cùng một thẻ phần tử bắt đầu

<Foo xmlns="http://schemas.foo.com" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://schemas.foo.com 
http://schemas.foo.com/Current/xsd/Foo.xsd"> 

Vấn đề tôi gặp phải là ngoại lệ: Tiền tố "không thể được định nghĩa lại" thành trong cùng một thẻ phần tử bắt đầu. Đây là C# code của tôi:

XNamespace xsi = "http://www.w3.org/2001/XMLScema-instance" 
XElement foo = new XElement("Foo", new XAttribute("xmlns", "http://schemas.foo.com"), 
            new XAttribute(Xnamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), 
            new XAttribute(xsi + "schemaLocation", "http://schemas.foo.com http://schemas.foo.com/Current/xsd/Foo.xsd")); 

Làm cách nào để khắc phục sự cố này? Tôi đang cố gắng gửi xml tạo ra như là cơ thể của một tin nhắn SOAP và tôi cần nó ở định dạng này cho người nhận.

EDIT: Tôi đã tìm thấy câu trả lời của mình cho một câu hỏi khác. Controlling the order of XML namepaces

+3

Được nhắc bởi thực tế là có câu trả lời mới cho câu hỏi này thay vì chỉ chỉnh sửa câu hỏi để nói rằng bạn có câu hỏi câu trả lời. Trừ khi câu hỏi này thực sự là một bản sao của câu hỏi khác, trong trường hợp đó nó phải được đánh dấu như vậy nhưng nó không có vẻ là một bản sao chính xác. – Chris

Trả lời

22

Bạn cần phải chỉ ra rằng phần tử "Foo" là một phần của không gian tên "http://schemas.foo.com". Hãy thử điều này:

XNamespace xNamespace = "http://schemas.foo.com";  
XNamespace xsi = "http://www.w3.org/2001/XMLScema-instance"; 
XElement foo = new XElement(xNamespace+"Foo", new XAttribute("xmlns", "http://schemas.foo.com"), 
               new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), 
               new XAttribute(xsi + "schemaLocation", "http://schemas.foo.com http://schemas.foo.com/Current/xsd/Foo.xsd")); 
+0

Làm việc cho tôi, phải là câu trả lời được chấp nhận. –

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