2013-02-20 2 views
1

내가 현재 가지고 :
설정 루트 네임 스페이스 접두사

XNamespace xmlns = "XSDName";<br> 
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance";<br> 
XNamespace schemaloc = @"XSDName XSDName.xsd"; 
XDocument xdoc = new XDocument(
    new XElement("BaseReport", 
    new XAttribute(xsi + "schemaLocation", schemaloc), 
    new XAttribute(XNamespace.Xmlns+"ns1", xmlns), 
    new XAttribute(XNamespace.Xmlns + "xsi", xsi)); 

이 나를 제공 :

BaseReport xsi:schemaLocation="XSDName XSDName .xsd" xmlns:ns1="XSDName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

가 어떻게 BaseReportns1:BaseReport을 읽을 수 있을까요?

+0

코드 샘플에'xsi','schemaloc' 및'xmlns' 변수에 대한 할당을 추가 할 수 있습니까? –

+0

거기서 업데이트되었습니다. – user2073374

+0

추가 조사를 한 후에 루트 요소에서 네임 스페이스를 사용할 수 있다고 생각하지 않습니다. 네임 스페이스는 루트 요소의 속성으로 정의되며 루트 자체에 대해서는 정의되지 않습니다. 당신은 더 읽을 수 있습니다 [여기] (http://stackoverflow.com/q/4985974/299327). –

답변

3

아래 코드는 원하는 출력을 제공합니다. 핵심은 이름 앞에 정의 된 네임 스페이스를 추가하고 .NET이 올바른 접두사를 파악하도록하는 것입니다.

XNamespace xmlns = "XSDName"; 
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance"; 
XNamespace schemaloc = @"XSDName XSDName.xsd"; 
XDocument xdoc = new XDocument(
    new XElement(xmlns + "BaseReport", 
    new XAttribute(xsi + "schemaLocation", schemaloc), 
    new XAttribute(XNamespace.Xmlns + "ns1", xmlns), 
    new XAttribute(XNamespace.Xmlns + "xsi", xsi))); 
+0

아, 예, 이전 링크에서 +/- 약간의 바이올린을 보냈습니다. [페이지가 새로 고쳐지지 않았고, derp.] 정말 고마워! – user2073374

+0

@ user2073374 문제 없습니다. 도움이 되었기 때문에 기쁩니다. –

관련 문제