2009-07-28 3 views
2

형식화 된 데이터 집합이 ds.GetXml을 사용하여 XML에 기록되면 null 값을 가진 열이 XML에서 제거됩니다. 나는 스키마가 작성되지 않았기 때문에 이것을 알고있다. 그러나 XML을 작성하기 전에 DataSet을 통해 구문 분석하고 모든 데이터베이스 널을 빈 문자열로 변환하지 않고이를 대체 할 수있는 방법이 있습니까?XML에 null 값이있는 형식화 된 데이터 집합


편집 : 추가 정보 :

1) 내 주요 작업은 데이터 집합을하고 WebRequest 클래스에 스트리밍하는 것입니다. 그래서는 XML 문서

Dim xmldoc As New Xml.XmlDocument() 
xmldoc.LoadXml(dsUpload.GetXml) 

을 만든 다음이

Using xw As XmlTextWriter = 
    New XmlTextWriter(req.GetRequestStream, System.Text.Encoding.Default) 
    xw.Formatting = Formatting.Indented 
    xmldoc.WriteTo(xw) 
    xw.Close() 
End Using 

2)이 DBNull이에 대해 이야기하고

3) 내가 필요로하는이 같은 HttpWebRequest를 (REQ)에 해당 xmldoc을 업로드하고 열 때 업로드 할 사이트가 포함되도록 태그를 모두 포함해야합니다 (기존 시스템이어야 함)


EDIT

1) 코드가 효율적이지 않지만 업로드 방법이 다른 클래스의 일반적인 방법이라는 것에 동의합니다. 이 같은 방법은 XML로 데이터 세트의 업로드 및 XML

예 String.Empty.And로 변환 할 수 있습니다만을 선택 System.String이 대부분 이잖아 동의

2) 무엇을 내 데이터 세트의 하드 코딩 된 문자열을 서비스하기 때문에 따라서 그것은 해당 xmldoc을 받아 있다.

3) 기존 시스템 주석에 관한 내용입니다. 여기에 더 우스운 것들이 있습니다. 나는 아마 그들이 쉼표로 구분 된 파일처럼 XML을 구문 분석한다고 생각합니다. 언제든지 데이터에 쉼표가 있습니다. :)

+0

어떤 .NET 버전을 사용하고 있습니까? –

+0

.NET 3.5를 사용 중입니다. – superartsy

답변

3

우선 XML을 문자열로 처리하지 않는 것이 좋습니다. 항상 XML 규칙에 민감한 API를 사용해야합니다. 이 경우 DataSet.WriteXml의 오버로드 중 하나를 사용해야합니다.

둘째, "null"이라고 말하면 DBNull을 언급합니까? 즉, 데이터베이스 용어로 NULL이거나, C#에서는 null 값을, VB.NET에서는 Nothing 값을 참조하고 있습니까?

마지막으로 왜이 열을 표시 하시겠습니까? 그들은 단지 공간을 차지하고 있습니다.


편집 : 코드

  1. 수정 :이 코드는 비효율적이다 : 다음 XmlDocument에로드 다시 XML을 구문 분석 한 다음 마지막으로 쓰기, XML 문자열로 DataSet 저장 XML을 다시 요청 스트림으로 보낸다. 또한 XmlTextWriter을 사용하며 .NET 2.0에서는 더 이상 사용되지 않습니다. 연구에서

    Dim settings As New XmlWriterSettings With {.Indent = True} 
    Using stream = req.GetRequestStream 
        Using writer = XmlWriter.Create(stream, settings) 
         dsUpload.WriteXml(writer, XmlWriteMode.IgnoreSchema) 
        End Using 
    End Using 
    
  2. 가 표시 열을 강제 할 수있는 쉬운 방법이있을 것 같지 않습니다 : 다음은 많은 청소기입니다.모든 DBNull.Value 값을 해당 유형의 기본값으로 바꿀 수 있습니다. String.Empty은 열의 .NET 유형이 string 인 경우에만 작동하며, 예를 들어 DateTime 열에서는 작동하지 않습니다. DBNull.Value이 아닌 다른 것으로 설정되면 테이블의 모든 열을 거쳐 AllowDBNull 속성을 false으로 설정해야합니다.

정말 필요한 것은 업로드하려는 사이트가 XML을 알아야한다는 것입니다. 소프트웨어가 XML을 이해하지 못해서 XML 스키마를 제공 할 수 없으므로 XML 스키마를 기대할 수없는 시대가 올 것입니다.

이 사이트가 어떤 사이트인지 쉽게 느낄 수 있으면 공개적으로 조롱 할 것입니다.

:-)

관련 문제