2014-04-22 3 views
2

클래스의 속성을 XML 파일로 serialize 한 다음이 파일을 서버에 업로드하는 아이디어가 있습니다. 이것은이 파일을 다시 다운로드하고 직렬화 된 콘텐트를 읽기 원하기 때문입니다. XML - 일련 화 클래스 - 몇 가지 질문

그래서 이런 구조 :

파일이 존재 (myfile.xml은) -> 파일 업로드 -> 파일에 클래스 (myclass.cs를) 데이터를 직렬화합니다.

<?xml version="1.0"?> 

-<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

<SomeProperty>0.1.0.0</SomeProperty> 
<SomePropertiesChild>Test</SomePropertiesChild> 

</MyClass> 

글쎄, 그래서 위와 같이 보이도록이, 내가 파일에 데이터를 직렬화하는 클래스를 구축, 문제가되지 않습니다 :

지금 내용이 같은 것을 볼 수 있었다.

지금 문제는 어떻게 진행해야할지 모르겠다는 것입니다. 다음에 새로운 데이터가 그런 식으로 직렬화되기를 원하지만, 새로운 XML 파일이 아닌 XML 파일에 연결되어야합니다. 그래서이 파일을 다운로드 한 다음에 첨부 파일로 새로운 데이터를 직렬화, 그 다음 볼 수 있도록 :

<?xml version="1.0"?> 

-<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

<SomeProperty>0.1.0.0</SomeProperty> 
<SomePropertiesChild>Test</SomePropertiesChild> 
<!-- This is the part that should be attached --> 
<SomeProperty>0.2.0.0</SomeProperty> 
<SomePropertiesChild>Test2</SomePropertiesChild> 

</MyClass> 

그리고 내가 원하는대로이 여러 번 반복해야합니다 : 다운로드 파일을, 새로운 데이터를 직렬화 이 파일에 첨부 한 다음 다시 업로드하십시오. 두 번째 요점은 내가 이것을 읽고 싶다는 것입니다.

나는 XML 클래스도 사용한다. 데이터를 직렬화해야하는 유형의 param 유형에 대해 속성을 포함하는 클래스를 설정합니다. 하지만 이제는 XML과 같은 이름의 노드가 더 많습니다. 나는 이것을 지금 분리하고 싶다. 그래서 하나의 클래스뿐만 아니라 동일한 이름을 가진 각 노드에 대해 새로운 클래스를 만듭니다. 우리가 첫 번째 쌍 (SomeProperty, SomePropertiesChild)를 가지고있는 XML에

:

조금 명확 있음을 표시합니다. 이 노드는 myclass.cs로 deserialize되어야합니다. 여기에는 XML 노드에 적합한 속성이 들어 있습니다. 예 :

그런 다음 첫 번째 XML 쌍을 해당 클래스로 직렬화 해제해야합니다. 하지만 XML 파일의 각 XML- "쌍"에 대해이 작업을 수행하려고하지만 내 머리에 올바른 구조를 얻을 수 없습니다. 여기에서 목록을 작성해야합니까, 아니면 어떻게해야합니까? 나는 그것을 분명히 설명 할 수 있었으면 좋겠다. 설명하기가 어렵다. 또한 첨부하는 방법을 모르겠습니다. 어떤 팁?

질문이 있으시면 으로 문의하십시오!

+0

아름다운 질문 제목 : – Fedor

+0

더 좋은 아이디어? –

+0

5 분 동안 생각하고 있었는데 아직 아무런 생각이 없습니다. 내가 생각해 내면 편집을 제안합니다. – Fedor

답변

2

당신이 찾고있는 것은 단순한 직렬화가 아닙니다. 같은 객체를 두 번 이상 직렬화하고 싶습니까?

가능한 해결 방법은 List<MyClass>을 직렬화하고 파일이있는 경우 새 인스턴스를 목록에 추가하는 것입니다.

+0

음, 고마워. 그럼 내가 그걸로 뭔가를하려고합니다 :) –

2

간단히 말해서, 찾고있는 것을 할 수있는 기본 제공 방법이 없습니다. 그러나 그것은 할 수 없다는 것을 의미하지는 않습니다. ...

업로드/다운로드 등을 통해 serialize 할 때마다 업데이트하는 List<MyClass>을 유지하는 것이 가장 간단하고 가장 가까운 방법입니다.그러나이 원하는 정확한 XML을 얻을 것이다, 이것은 더 복잡한 접근 방식은 MyClassIXmlSerializable를 구현해야하고 처리하는 WriteXml/ReadXml의 동작을 재정의하는 것

<ListOfMyClass> 
    <MyClass> 
     <Property>1</Property> 
     ... 
    </MyClass> 
    <MyClass> 
     <Property>2</Property> 
     ... 
    </MyClass> 
</ListOfMyClass> 

의 라인을 따라 뭔가를 생산할 것이다 당신의 사용자 정의 XML 형식.

+0

글쎄, 통고 주셔서 감사합니다. 그러면 나는 그것을 그렇게 간단하게 할 것입니다. –