2011-12-14 1 views
0

다음 코드를 사용하여 xml을 만들려고합니다.XML 빈 특성 만들기, ':'문자 사용 문제

XmlDocument xmlDocument = new XmlDocument(); 

XmlProcessingInstruction xPI = xmlDocument.CreateProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); 
xmlDocument.AppendChild(xPI); 

XmlElement xElmntheader = xmlDocument.CreateElement("soapenv:Header", " "); 
xmlDocument.AppendChild(xElmntheader); 

MemoryStream ms = new MemoryStream(); 
xmlDocument.Save(ms); 

string text = System.Text.Encoding.GetEncoding("UTF-8").GetString(ms.GetBuffer(), 0, (int)ms.Length); 

출력 내가 soapenv:Header에서 xmlns:soapenv=" "을 제거 할 방법이

<xml version='1.0' encoding='UTF-8'?> 
<soapenv:Header/> 

처럼 만들려고했다

<xml version='1.0' encoding='UTF-8'?> 
<soapenv:Header xmlns:soapenv=" " /> 

입니까?

도움을 주시면 감사하겠습니다.

+2

왜 그 속성을 제거 하시겠습니까? 그것은'soapenv'라는 XML 네임 스페이스를 사용하고 있기 때문에 필요합니다. – BoltClock

답변

3

부적절한 (구문 적으로 잘못된) XML을 만드는 방법을 묻는 것입니다. XmlDocument API는이를 수행하도록 설계되지 않았습니다.

당신이 요소 이름 soapenvxmlns:soapenv pseudoattribute를 사용하여이 요소 (또는 상위)에 선언 된 네임 스페이스 접두사, 의미

soapenv:Header 

을 사용하는 경우. 선언되지 않은 경우 XML 출력은 자체적 인 XML 파서에서 허용하지 않습니다.

당신이라는 메소드 서명,

xmlDocument.CreateElement(string1, string2); 

는 두 개의 인수를 취 요소의 수식 명 (접두사를 포함 할 수있다, 그것은 마찬가지로 귀하의 경우); 네임 스페이스 URI The documentation는 예상 출력이 무엇인지 보여줍니다

다음 C# 코드를 다음과 같은 XML 텍스트에 해당 요소에

XmlElement elem; 
elem = doc.CreateElement("xy:item", "urn:abc"); 

결과를.

<xy:item xmlns:item="urn:abc"/> 

이 요소에 대한 예상 네임 스페이스 URI는 "http://schemas.xmlsoap.org/soap/envelope/"입니다.

string soapNSURI = "http://schemas.xmlsoap.org/soap/envelope/"; 

때문에 그것을 사용 : 그래서 당신은 그 네임 스페이스 URI와 soapenv 접두사를 선언 할 것

XmlElement xElmntheader = xmlDocument.CreateElement("soapenv:Header", soapNSURI); 
+0

답장을 보내 주셔서 감사합니다. URI를 추가하면 나에게 도움이되었습니다. 한 번 더 삽입하려고했습니다. XmlElement xElmntinsert = xmlDocument.CreateElement ("pip : insert", ""); xElmntbody.AppendChild (xElmntinsert); pip에 대한 네임 스페이스를 얻을 수 있습니까? 다시 한번, 지원에 감사드립니다. –

+0

@JinoJose : "pip"가 나타내는 네임 스페이스를 모르겠습니다. 'pip : insert'에 대해 어디서 들었습니까? – LarsH

+0

pip는 사전 정의 통합 지점을 의미하며 사용자 정의 이름 공간 URI였습니다. 나는 vallue를 얻었다. 시간과 도움에 감사드립니다. –

0

를 (예를 들어, 사용의 기본 네임 스페이스) 네임 스페이스없이 만든 다음 그 부분은하지 않습니다 필요한 경우 :

xmlDocument.CreateElement("Header");