XML 파일에 새 노드를 추가하는 코드가 있으며 완벽하게 작동하지만 추가시 변경 사항을 저장할 때 xml 파일의 원래 구조가 변경됩니다.원본 구조를 잃지 않고 XML 노드를 추가하는 방법은 무엇입니까?
은 원래 파일은 다음과 같이 각 노드에 전체 라인 또는 행이 있습니다
<DATA>
<ROW><mk v = "2801"/><gd v = "170300"/><wn v = "00Y6354"/><bn v = ""/></ROW>
<ROW><mk v = "2801"/><gd v = "170301"/><wn v = "00Y6355"/><bn v = ""/></ROW>
<ROW><mk v = "2801"/><gd v = "170302"/><wn v = "00Y6356"/><bn v = ""/></ROW>
</DATA>
하지만 새로운 노드를 추가하고 변경 사항을 저장 한 후를 구조는 다음과 같습니다 : 나는했습니다
<DATA>
<ROW>
<mk v = "2801"/>
<gd v = "170300"/>
<wn v = "00Y6354"/>
<bn v = ""/>
</ROW>
<ROW>
<mk v = "2801"/>
<gd v = "170301"/>
<wn v = "00Y6355"/>
<bn v = ""/>
</ROW>
<ROW>
<mk v = "2801"/>
<gd v = "170302"/>
<wn v = "00Y6356"/>
<bn v = ""/>
</ROW>
<ROW>
<mk v = "2341"/>
<gd v = "170342"/>
<wn v = "00Y9872"/>
<bn v = "new node"/>
</ROW>
</DATA>
첫 번째 구조처럼 FINAL OUTPUT을 사용하여 몇 가지 예제를 찾으려고 시도했지만 아무것도 표시하지 않았습니다. 따라서 원래 구조를 변경하지 않고 변경 사항을 저장하는 것이 가능합니다.
내 코드는 다음과 같다 :
public void CreateXML(string[] ipRow, string ipFile)
{
XmlDocument doc = new XmlDocument();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ipFile);
for (int j = 0; j < ipRow.Length; j++)
{
doc.LoadXml(ipRow[j]);
XmlNode newNode = doc.DocumentElement;
XmlNode copiedNode = xmlDoc.ImportNode(newNode, true);
xmlDoc.DocumentElement.LastChild.AppendChild(copiedNode);
}
xmlDoc.Save(ipFile);
}
난 그냥 형식의 일종을 적용 할, 또는 적어도 파일 안에 이미 무엇의 원래 구조를 존중하는 프로그램을 나타냅니다. StringBuilders, XmlWriterSettings 및 stuff를 사용할 수 있지만 작동하지 않는다고 말하는 포럼을 발견했습니다. 알 수 있듯이 새로운 노드는 문자열에서 비롯된 것이므로 변경할 방법이 없습니다. 새 노드가 만들어지면 코드를 그대로 유지하고 원래 형식을 유지하는 규칙을 추가하기 만하면됩니다.
누군가 Visual Studio 2008에서 C#으로이 작업을 수행 할 수 없다는 것을 알고있는 경우 (필자는 명백한 전문가 만 신뢰할 것입니다).
답장을 보내주세요. 감사.
가능한 복제본 http://stackoverflow.com/questions/8589592/preserve-xml-formatting-using-xmldocument – jpe
저는 이미 preservewhitespace를 시도해 봤는데 작동하지 않습니다. 그 결과는 someting입니다. 이 같은 WN의 V = "00Y6354"/> |
<= "2801"/ MK의 V> = "170301"> WN의 V = "00Y6355"/> WN V = "00Y6356"/> |
단 하나의 행 LL XML 코드, 나는 그것을 찾고 있지 않다 –
왜이 특정 형식이 필요합니까? XML 파일에서 형식이 중요하다는 것은 매우 드문 일입니다. – JcFx