我有一個現有的XML文檔:格式的XElement與標籤
<?xml version="1.0" encoding="utf-16"?>
<property_set_list>
<property_set symbol_id="TestPropertySet1">
<property symbol_id="TestName1" id="1" type="8">Test</property>
<property symbol_id="TestName2" id="2" type="8"></property>
</property_set>
<property_set symbol_id="TestPropertySet2">
</property_set>
</property_set_list>
我加載和更新,並添加一些屬性。例如:
TestName1屬性已更新。 TestName 2屬性保持原樣。
在TestPropertySet2我添加一些新的屬性。
文檔的所有操作後的輸出如下所示:
<?xml version="1.0" encoding="utf-16"?>
<property_set_list>
<property_set symbol_id="TestPropertySet1">
<property symbol_id="TestName1" id="1" type="8">qwerty</property>
<property symbol_id="TestName2" id="1" type="8">
</property>
</property_set>
<property_set symbol_id="TestPropertySet2">
<property symbol_id="localeID" id="1" type="19">1033</property>
<property symbol_id="localeID" id="2" type="19">1079</property>
</property_set>
</property_set_list>
這是我用於裝載的代碼和操縱文檔:
using (var reader = ReaderCreator())
using (var output = OutputCreator())
using (var xmlWriter = new XmlTextWriter(output))
{
xmlWriter.Indentation = 1;
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.IndentChar = TAB;
XDoc = XElement.Load(reader, LoadOptions.None);
Namespace = "some namespace";
// some code to update properties
// adds new nodes to TestPropertySet2
foreach (var localeId in _franchise.LocaleIds)
{
TestPropertySet2.Add(
new XElement(
Namespace + "property", localeId,
new XAttribute("symbol_id", "localeID"),
new XAttribute("id", i),
new XAttribute("type", "19")
)
);
i++;
}
XDoc.Save(xmlWriter);
}
問題是TestName2屬性是現在兩排:
<property symbol_id="TestName2" id="1" type="8">
</property>
根據您希望最終XML的外觀,可以使用['XmlWriterSettings'](http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings(v = vs.110).aspx),並將'IndentChars'設置爲'\ t \ t'。但是,這將使用雙標籤縮進整個文檔。我不知道你是否可以用不同的方式縮進不同的部分(不用編寫'XmlWriter')。你還需要在'XmlWriterSettings'上設置'Indent = true'。 –
繼編輯之後:我不知道爲什麼會發生這種情況。我在我的電腦上測試過它,它永遠不會拆分''標籤。如果您可以將保存的(整個)部分發布到文件中,可能會有所幫助。 –
我已更新了整篇文章。希望現在更清楚。謝謝! – Mdb