반응형
XmlDocument를 사용하여 XML 문서를 만드는 방법은 무엇입니까?
이와 같은 XML 문서를 만드는 방법은?
<body>
<level1>
<level2>text</level2>
<level2>other text</level2>
</level1>
</body>
사용.XmlDocument
C#로
다음은?
#region Using Statements
using System;
using System.Xml;
#endregion
class Program {
static void Main( string[ ] args ) {
XmlDocument doc = new XmlDocument( );
//(1) the xml declaration is recommended, but not mandatory
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration( "1.0", "UTF-8", null );
XmlElement root = doc.DocumentElement;
doc.InsertBefore( xmlDeclaration, root );
//(2) string.Empty makes cleaner code
XmlElement element1 = doc.CreateElement( string.Empty, "body", string.Empty );
doc.AppendChild( element1 );
XmlElement element2 = doc.CreateElement( string.Empty, "level1", string.Empty );
element1.AppendChild( element2 );
XmlElement element3 = doc.CreateElement( string.Empty, "level2", string.Empty );
XmlText text1 = doc.CreateTextNode( "text" );
element3.AppendChild( text1 );
element2.AppendChild( element3 );
XmlElement element4 = doc.CreateElement( string.Empty, "level2", string.Empty );
XmlText text2 = doc.CreateTextNode( "other text" );
element4.AppendChild( text2 );
element2.AppendChild( element4 );
doc.Save( "D:\\document.xml" );
}
}
(1) 유효한 XML 파일에 XML 선언이 필요합니까?
(2) String의 차이점은 무엇입니까?비어 있음과 ""(빈 문자열)?
결과는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<body>
<level1>
<level2>text</level2>
<level2>other text</level2>
</level1>
</body>
그러나 다음과 같이 더 간단하고 읽기 쉬운 LINQ XML로을 사용하는 것을 권장합니다.
#region Using Statements
using System;
using System.Xml.Linq;
#endregion
class Program {
static void Main( string[ ] args ) {
XDocument doc = new XDocument( new XElement( "body",
new XElement( "level1",
new XElement( "level2", "text" ),
new XElement( "level2", "other text" ) ) ) );
doc.Save( "D:\\document.xml" );
}
}
위의 사전 ->level2로 작업하는 것은 (누군가 유용하다고 생각할 경우를 대비하여) 제 경우 사전에서 가져온 것입니다. 첫 번째 예를 시도하다 우연히 이 오류가 발생했습니다. "이 문서에는 이미 'DocumentElement' 노드가 있습니다."저는 여기에 있는 답변에서 영감을 얻었습니다.
내 코드를 편집했습니다. (xmlDoc.문서 요소.하위 추가(본문)
//a dictionary:
Dictionary<string, string> Level2Data
{
{"level2", "text"},
{"level2", "other text"},
{"same_level2", "more text"}
}
//xml Decalration:
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = xmlDoc.DocumentElement;
xmlDoc.InsertBefore(xmlDeclaration, root);
// add body
XmlElement body = xmlDoc.CreateElement(string.Empty, "body", string.Empty);
xmlDoc.AppendChild(body);
XmlElement body = xmlDoc.CreateElement(string.Empty, "body", string.Empty);
xmlDoc.DocumentElement.AppendChild(body); //without DocumentElement ->ERR
foreach (KeyValuePair<string, string> entry in Level2Data)
{
//write to xml: - it works version 1.
XmlNode keyNode = xmlDoc.CreateElement(entry.Key); //open TAB
keyNode.InnerText = entry.Value;
body.AppendChild(keyNode); //close TAB
//Write to xmml verdion 2: (uncomment the next 4 lines and comment the above 3 - version 1
//XmlElement key = xmlDoc.CreateElement(string.Empty, entry.Key, string.Empty);
//XmlText value = xmlDoc.CreateTextNode(entry.Value);
//key.AppendChild(value);
//body.AppendChild(key);
}
두 버전(각 루프에 대해 내부 1과 2) 모두 출력을 제공합니다.
<?xml version="1.0" encoding="UTF-8"?>
<body>
<level1>
<level2>text</level2>
<level2>ther text</level2>
<same_level2>more text</same_level2>
</level1>
</body>
(참고: 사전의 세 번째 줄 "동일한 레벨 2"도 다른 줄과 마찬가지로 레벨 2가 될 수 있지만 사전의 장점을 설명하고 싶었습니다. 제 경우에는 이름이 다른 레벨 2가 필요했습니다.
언급URL : https://stackoverflow.com/questions/11492705/how-to-create-an-xml-document-using-xmldocument
반응형
'programing' 카테고리의 다른 글
노코기리 문서를 루비 해시로 변환 (0) | 2023.10.13 |
---|---|
워드프레스에서 포스트아이디를 사용하여 포스트 썸네일을 얻는 방법? (0) | 2023.10.13 |
포스트 컨텐츠에서 WordPress 숏코드 속성을 추출하는 방법 (0) | 2023.10.13 |
e.preventDefault()를 호출한 후 양식 제출 (0) | 2023.10.13 |
아이폰 시뮬레이터 리셋 방법 (0) | 2023.10.13 |