2012-05-23 6 views
0
XmlElement xmlElementSAPD = xmlDocument.CreateElement("SAPD"); 
root.AppendChild(xmlElementSAPD); 

xmlElementSAPD.AppendChild(XmlFunctions.GetXMLElement(xmlDocument, "smu", dr.GetString("sma").Trim())); 

위의 C# 코드는 아래 XML을 만듭니다.xml의 네임 스페이스 문제

<SAPD> 
<smu>123</smu> 
</SAPD> 
내가

<ns0:SAPD> 
<ns0:smu>123</ns0:smu> 
</ns0:SAPD> 

사람을 얻을 수 있도록

어떻게 위의 코드를 변경할 수 있습니까? ns0 : XML 노드에 어떻게 추가 할 수 있습니까?

+0

귀하의 예를 들어 XML이 유효하지 않습니다. 그것은'ns0' 접두사를 정의하지 않습니다. –

+0

어떤 네임 스페이스가 "ns0"접두사에 해당합니까? 이 노드 또는 요소의 부모 노드 중 하나의 네임 스페이스에 ('xmlns : ns0' 선언을 통해) 매핑되는 접두사 만 가질 수 있습니다. – carlosfigueira

+0

전체 코드가 아닙니다. ns0은 스키마가있는 URL을 가리 키도록 이미 정의되어 있습니다. 데이터베이스에서 sma 값이 123 값을 출력 중입니다. < "ns0", "SAPD">를 사용하면 노드 출력에 xmlns를 쓰지 않아도됩니다. 내가 원하는 것은 user680865

답변

0

xml 문서에 네임 스페이스를 추가해야합니다.

그냥 당신이 NS0은 XML이 유효하지 않을 다른 네임 스페이스로 매핑 할 필요가 앞에

XmlDocument doc = new XmlDocument(); 
XmlSchema schema = new XmlSchema(); 
schema.Namespaces.Add("ns0", "http://www.sample.com/file"); 
doc.Schemas.Add(schema); 
+0

입니다. 이미이 것을 정의했습니다. XML의 각 노드에서 ns0 :에 대해 혼동합니다. 를 제거 할 수 없습니다. 내가 원하는 것은 user680865

0

아래를 보라 당신에게 아이디어를 제공합니다.

Assumning NS0은 아래의 코드를 사용할 수 있습니다 http://tempuri.org에 매핑 :

 XmlDocument doc = new XmlDocument(); 
     XmlElement sapd= doc.CreateElement("ns0","SAPD","http://tempuri.org"); 
     XmlElement smu = doc.CreateElement("ns0", "smu", "http://tempuri.org"); 
     smu.InnerText = "123"; 
     sapd.AppendChild(smu); 
     doc.AppendChild(sapd); 
     doc.InnerXml.ToString(); 
+0

입니다. doc.CreateElement ("ns0", "SAPD", "http://tempuri.org"); 를 작성하고 있습니다. 그러나 나는 그것을 원하지 않는다. 원하는 것은 모두 user680865

+1

@ user680865입니다. SAPD 노드에서 원하지 않으면 네임 스페이스를 지정해야합니다. 그런 다음 상위 노드로 이동해야합니다. 예제 XML에는 부모 노드가 없으므로 SAPD 노드로 이동해야합니다. –