我想讀取一個xml字符串,然後通過插入另一個xml字符串來修改它,我不知道如何做到這一點,我掙扎着,因爲我是這個領域的初學者。我搜索網,我是真的的XmlWriter和XmlReader中之間confussing因爲我不想使用XmlDocument的 我發現這個來自微軟 http://msdn.microsoft.com/en-us/library/cc189056(v=vs.95).aspx使用xmlReader
所以我的代碼是這樣的
String Mainxmltext = "<ClosedKPICalls>" +
"<ServiceInfo> <ServiceNo>HR011</ServiceNo> <ServiceName>Petty cash</ServiceName> "+
"<RecCount>0</RecCount> <RegdKPI>2</RegdKPI> </ServiceInfo> </ClosedKPICalls>";
String xmlinnerText = "<TaskDetails> <name>Jhone</name> <Description>just for testing</Description> </TaskDetails>";
StringBuilder output = new StringBuilder();
using (XmlReader reader = XmlReader.Create(new StringReader(Mainxmltext)))
{
XmlWriterSettings ws = new XmlWriterSettings();
ws.Indent = true;
using (XmlWriter writer = XmlWriter.Create(output, ws))
{
// Parse the file and display each of the nodes.
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
break;
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EndElement:
writer.WriteFullEndElement();
break;
}
}
}
}
MessageBox.Show(output.ToString());
}
,所以我成功讀取第一個字符串現在我怎麼能對主XML之前,我的意思的結束標記前插入第二個測試,我的XML應該是這樣的
<ClosedKPICalls>
<ServiceInfo>
<ServiceNo>HR011</ServiceNo>
<ServiceName>Petty cash</ServiceName>
<RecCount>0</RecCount>
<RegdKPI>2</RegdKPI>
</ServiceInfo>
<TaskDetails>
<name>Jhone</name>
<Description>just for testing</Description>
</TaskDetails>
</ClosedKPICalls>
請幫助 謝謝
XElement是不夠的?我們真的需要XDocument嗎?因爲在xml中沒有根,聲明。 – VJAI
@Mark,當然,只是味道的問題。 –
謝謝你的解決方案和它的完美工作,但是如果我想在MainxmlText中的多個地方添加xmlinnerText cuz,在這種情況下它會在最後一個標記之前添加它。也XDocument會影響內存? – Noora