.xml의 구성 중 일부를 나타내는 클래스 라이브러리를 사용하고 있습니다. 구성은 XmlSerializer
을 사용하여 읽습니다. 다행스럽게도 .xml을 나타내는 클래스는 XmlAnyElement
속성을 사용하여 원래 클래스 라이브러리를 수정하지 않고 구성 데이터를 내 용도로 확장 할 수 있습니다.XmlSerializer.Serialize에 대한 호출을 통해 XmlNode를 만드는 방법은 무엇입니까?
<?xml version="1.0" encoding="utf-8"?>
<Config>
<data>This is some data</data>
<MyConfig>
<data>This is my data</data>
</MyConfig>
</Config>
이것은 비 직렬화에 적합합니다. 클래스 라이브러리가 정상적으로 .xml을 비 직렬화 할 수있게하고 내부 에 대해 XmlNodeReader
과 함께 내 자신의 XmlSerializer
인스턴스를 사용할 수 있습니다.
public class Config
{
[XmlElement]
public string data;
[XmlAnyElement]
public XmlNode element;
}
public class MyConfig
{
[XmlElement]
public string data;
}
class Program
{
static void Main(string[] args)
{
using (Stream fs = new FileStream(@"c:\temp\xmltest.xml", FileMode.Open))
{
XmlSerializer xser1 = new XmlSerializer(typeof(Config));
Config config = (Config)xser1.Deserialize(fs);
if (config.element != null)
{
XmlSerializer xser2 = new XmlSerializer(typeof(MyConfig));
MyConfig myConfig = (MyConfig)xser2.Deserialize(new XmlNodeReader(config.element));
}
}
}
나는 사용자가 읽을되지 않은 그래서 새로운 객체가 생성 될 클래스 라이브러리 구성뿐만 아니라 내 자신의 구성을 모두 포함하는 새로운 구성 파일을 생성 할 수있는 유틸리티를 작성해야합니다. XML 파일. 문제는 데이터를 .xml로 다시 직렬화하는 방법입니다.
클래스 라이브러리 구성에서 동일한 메소드를 호출하기 전에 처음에 데이터에 XmlSerializer.Serialize
을 호출해야한다는 것을 알고 있습니다. 그러나이 경우 Serialize
을 호출 한 후 내 데이터가 XmlNode
으로 표시되어야합니다. XmlSerializer
을 사용하여 객체를 XmlNode
으로 직렬화하는 가장 좋은 방법은 무엇입니까?
감사합니다,
케빈이
그것은 크리스 Lovett에 의해 작성된 XmlNodeWriter
클래스처럼 보이는 btw-- Microsoft에서 한 번에 가능했지만, 링크가 깨져 있습니다. 누구든지이 수업을들을 수있는 대체 위치를 알고 있습니까?
'doc.DocumentElement : – tm1