2013-07-12 4 views
0

나는 이것이 쉬운 작업이라고 생각했지만 토끼 구멍에서 길을 잃은 것 같습니다.클래스를 XML로 바꾼 다음 바 이어 레이로 변환하는 데 도움이 필요합니다

클래스를 XML로 변환 한 다음 바이트 배열을 WCF Restful webservice 용 HTTPWebRequest의 내용으로 보내려고합니다. 내 코드는 바이트 배열에서 XML로 클래스를 반환하지만 형식이 잘못되었습니다. XML은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?><Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><FirstName>Richard</FirstName><LastName>Cranium</LastName></Person> 

나는이 여분의 선언을 제거하는 것입니다 생각하고 OmitXmlDeclaration 방법을 사용하려고 시도했지만 그것이하여 XmlTextWriter 개체 작동하지 않습니다와 나는 xmlwriterobject를 사용할 때 변환 방법을 결정할 수 없습니다 Byte 배열의 결과 여기

내 코드입니다 :

내가 올바른 여는 태그와 XML을 얻기 위해 무엇을해야
Private Shared Function GenerateXMLPersonAsByte(strFirstName As String, strLastName As String) As Byte() 
    ' This should serialize this to a byte array 

    Dim p As New Person() 
    p.FirstName = strFirstName 
    p.LastName = strLastName 

    ' Want to use this with the xmlTextWriter but it does not support the property it is to be used with the XMLWriter instead 
    'Dim settings As XmlWriterSettings = New XmlWriterSettings() 
    'settings.OmitXmlDeclaration = True 
    'settings.ConformanceLevel = ConformanceLevel.Fragment 
    'settings.CloseOutput = False 

    ' Create the XmlWriter object and write some content. 
    Dim mStream As New MemoryStream() 
    Dim ser As New XmlSerializer(GetType(Person)) 
    Dim xmlTW As New XmlTextWriter(mStream, Encoding.UTF8) 
    ser.Serialize(xmlTW, p) 
    mStream = DirectCast(xmlTW.BaseStream, MemoryStream) 

    mStream.Close() 
    Return mStream.ToArray() 

End Function 

? 또는 XmlTextWriter 개체의 출력을 바이트 배열로 가져 오는 방법은 무엇입니까?

답변

0

나는

byte[] data = ASCIIEncoding.UTF8.GetBytes(myXmlString); 
+0

모든 질문에 대답,하지만

Dim myXmlString As String Dim myStringWriter As New StringWriter() Dim myXmlTextWriter As XmlTextWriter = New XmlTextWriter(myStringWriter) 'Write XML, and then flush the writer... myXmlTextWriter.Flush() 'Return text from string writer... myXmlString = myStringWriter.ToString() 'Close the Objects... myStringWriter.Close() myXmlTextWriter.Close() 

첫 번째 문자열로 변환하여 바이트로 변환 (죄송합니다, C#을,하지만 당신은 .NET 호출을받을) 수없는 done 불행히도 내 코드는 사람 시작 태그보다 앞에있는 XML 선언 부분을 제거하지만 사람 시작 태그 다음에 나오는 줄을 제거합니다. (xmlns : xsi = ""http://www.w3.org/2001/XMLSchema -instance ""xmlns : xsd = ""http://www.w3.org/2001/XMLSchema "")가 여전히 존재합니다. 어떻게 내가 이걸 없앨 수 있을지 생각해? –

+0

시도해 보셨습니까? null 네임 스페이스를 설정하는 마지막 항목을보십시오. http://bytes.com/topic/net/answers/809956-how-remove-xmlns-xsd-root-tag-via-xmlserialization –

+0

감사합니다. –