반응형
C#의 XDocument를 사용한 XML 파일 작성
저는.List<string>
다음을 포함하는 "sampleList"
Data1
Data2
Data3...
파일 구조는 다음과 같습니다.
<file>
<name filename="sample"/>
<date modified =" "/>
<info>
<data value="Data1"/>
<data value="Data2"/>
<data value="Data3"/>
</info>
</file>
현재 XmlDocument를 사용하여 이 작업을 수행하고 있습니다.
예:
List<string> lst;
XmlDocument XD = new XmlDocument();
XmlElement root = XD.CreateElement("file");
XmlElement nm = XD.CreateElement("name");
nm.SetAttribute("filename", "Sample");
root.AppendChild(nm);
XmlElement date = XD.CreateElement("date");
date.SetAttribute("modified", DateTime.Now.ToString());
root.AppendChild(date);
XmlElement info = XD.CreateElement("info");
for (int i = 0; i < lst.Count; i++)
{
XmlElement da = XD.CreateElement("data");
da.SetAttribute("value",lst[i]);
info.AppendChild(da);
}
root.AppendChild(info);
XD.AppendChild(root);
XD.Save("Sample.xml");
XDocument를 사용하여 동일한 XML 구조를 만들려면 어떻게 해야 합니까?
LINQ to XML을 사용하면 다음과 같은 세 가지 기능을 통해 이 작업이 훨씬 간단해집니다.
- 문서의 일부가 아닌 개체를 구성할 수 있습니다.
- 개체를 구성하고 자식을 인수로 제공할 수 있습니다.
- 논쟁이 반복될 수 있는 경우 다음과 같이 반복됩니다.
여기서 할 수 있는 것은 다음과 같습니다.
void Main()
{
List<string> list = new List<string>
{
"Data1", "Data2", "Data3"
};
XDocument doc =
new XDocument(
new XElement("file",
new XElement("name", new XAttribute("filename", "sample")),
new XElement("date", new XAttribute("modified", DateTime.Now)),
new XElement("info",
list.Select(x => new XElement("data", new XAttribute("value", x)))
)
)
);
doc.Save("Sample.xml");
}
저는 코드 자체가 문서의 구조를 반영하도록 하기 위해 의도적으로 이 코드 레이아웃을 사용했습니다.
텍스트 노드를 포함하는 요소를 원할 경우 텍스트를 다른 생성자 인수로 전달하는 것만으로 구성할 수 있습니다.
// Constructs <element>text within element</element>
XElement element = new XElement("element", "text within element");
를 이용해서.Save method는 출력에 BOM이 있음을 의미하며, 모든 애플리케이션이 만족하지는 않습니다.BOM을 원하지 않고 확신할 수 없는 경우 작성자를 통해 XD 문서를 전달하는 것이 좋습니다.
using (var writer = new XmlTextWriter(".\\your.xml", new UTF8Encoding(false)))
{
doc.Save(writer);
}
언급URL : https://stackoverflow.com/questions/2948255/xml-file-creation-using-xdocument-in-c-sharp
반응형
'programing' 카테고리의 다른 글
CSS 규칙 "clear: both"는 무엇을 합니까? (0) | 2023.10.24 |
---|---|
PHP 경고를 보여주거나 던지는 방법이 있습니까? (0) | 2023.10.24 |
WP REST API GET 요청 인증 (0) | 2023.10.24 |
jquery - 디브가 높이를 변경하는지 또는 CSS 속성을 변경하는지 확인하는 방법은 무엇입니까? (0) | 2023.10.24 |
Android - 상단에만 둥근 모서리로 그릴 수 있음 (0) | 2023.10.19 |