2012-01-12 4 views
2

XMl 파일에 출력 (쓰기)하는 데이터가있는 DataSet이 있습니다.Dataset.WriteXml() 네임 스페이스 및 접두사

이 같은 데이터 세트에 네임 스페이스 접두사를 추가 한

:

public static string XmlNamespace = "http://namespace"; 
public static string XmlPrefix = "ns0"; 
RequestDataSet.Namespace = XmlNamespace; 
RequestDataSet.Prefix = XmlPrefix; 

다음과 같이 XML 출력은 다음과 같습니다

<?xml version="1.0" standalone="yes"?> 
<ns0:list xmlns:ns0="http://namespace"> 
    <ns0:item xmlns="http://namespace"> 
    <data1>1234</data1> 
    <data2>91011</data2> 
    </item> 
</ns0:list> 

를하지만이 같은 없어야합니다 (온 네임 스페이스 항목 레코드. 그냥 접두어)

<?xml version="1.0" standalone="yes"?> 
<ns0:list xmlns:ns0="http://namespace"> 
    <ns0:item> 
    <data1>1234</data1> 
    <data2>91011</data2> 
    </item> 
</ns0:list> 

나는 접두사/네임 스페이스 테이블을 null로 설정해 보았습니다. 이 같은 :

RequestDataSet.Tables["item"].Prefix = XmlPrefix; 
RequestDataSet.Tables["item"].Namespace = null; 

하지만 그건 누구라도 이것에 대한 해결책을 알고 있나요 ... 작동하지 않는 이유는 무엇입니까?

답변

0

BizTalk 어댑터와 함께 작업 할 때 비슷한 문제가 발생했습니다 ...하지만 그건 다른 이야기입니다.

다른 (더 깔끔한) 방법이 있는지 확실하지 않지만, here과 같이 속성을 항상 '잡아'제거 할 수 있습니다.

효과적으로 다음을 수행 할 것입니다 :

XmlDocument xDoc = new XmlDocument(); 
    xDoc.LoadXml(xml); 
    if (xDoc.DocumentElement.Attributes.Count > 0) 
    { 
     XmlAttribute xAtt = xDoc.DocumentElement.Attributes[0]; 
     xDoc.DocumentElement.Attributes.Remove(xAtt); 
+0

가능한 성능 고려 사항을 여기뿐만 아니라, 당신의 XML의 크기에 따라. – Nick

+0

XML 형식의 파일을 처리하기 위해 BizTalk 서버로 보내지는 것과 같은 다른 이야기 인 것은 확실하지 않습니다. 내 문제는 BizTalk가 네임 스페이스를 좋아하지 않기 때문에 XML 파일의 유효성을 검사 할 수 없다는 것입니다.) 나는 당신이 나에게 준 솔루션을 시험해 볼 것이다! 곧 다시 아픈보고 :) –

+0

아, BizTalk이 시나리오에서 자르기 것 같습니다! 알았어. BizTalk에서 사용한 솔루션은 매퍼에서 인라인 함수를 사용하는 것이 었습니다. 위의 경우와 비슷한 결과가 나올 수 있습니다. 그것이 매퍼에서 XSLT로 해결할 수있는 잠재적 인 방법이 있습니다. 계속 게시 해주세요. – Nick