关于xml与string的操作问题
我现在有一个string = @"<APEList Version='1.0'><APE type='0x30'><parameter id='1'><value>Management History policy returned an error.</value></parameter></APE></APEList>".(这只是例子,原字符串比这个复杂得多。)
因为想把其中的value中的innerText后加上一些字符变成类似"Management History policy returned an error. GOOD",所以我觉得把这段string当成xml来操作的话,可能会方便些(取到Node,修改值)。
最后,我想得到的修改后的字符串:
string = @"<APEList Version='1.0'><APE type='0x30'><parameter id='1'><value>Management History policy returned an error.GOOD</value></parameter></APE></APEList>".
请问要怎么做?也就是把string转成xml文档,然后修改,然后再拿回string.
问题点数:20、回复次数:3Top
1 楼xinyangt(信仰t)回复于 2006-03-03 17:12:09 得分 15
下面的示例使用 XmlTextWriter 创建 XML 输出。
[Visual Basic]
Shared Sub WriteQuote(writer As XmlWriter, symbol As String, price As Double, change As Double, volume As Long)
writer.WriteStartElement("Stock")
writer.WriteAttributeString("Symbol", symbol)
writer.WriteElementString("Price", XmlConvert.ToString(price))
writer.WriteElementString("Change", XmlConvert.ToString(change))
writer.WriteElementString("Volume", XmlConvert.ToString(volume))
writer.WriteEndElement()
End Sub 'WriteQuote
Public Shared Sub Main()
Dim writer As New XmlTextWriter(Console.Out)
writer.Formatting = Formatting.Indented
WriteQuote(writer, "MSFT", 74.125, 5.89, 69020000)
writer.Close()
End Sub 'Main
[C#]
static void WriteQuote(XmlWriter writer, string symbol,
double price, double change, long volume)
{
writer.WriteStartElement("Stock");
writer.WriteAttributeString("Symbol", symbol);
writer.WriteElementString("Price", XmlConvert.ToString(price));
writer.WriteElementString("Change", XmlConvert.ToString(change));
writer.WriteElementString("Volume", XmlConvert.ToString(volume));
writer.WriteEndElement();
}
public static void Main(){
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting = Formatting.Indented;
WriteQuote(writer, "MSFT", 74.125, 5.89, 69020000);
writer.Close();
}
输出
<Stock Symbol="MSFT">
<Price>74.125</Price>
<Change>5.89</Change>
<Volume>69020000</Volume>
</Stock>
以上是msdn中的例子Top
2 楼xinyangt(信仰t)回复于 2006-03-03 17:27:05 得分 0
你要修改的是时候不用 把整个xml拿回string 只要通过找到对应node 的 InnerText值就ok了
private string filename = aaa.xml;
private XmlDocument XmlDoc;
//读取
string result = null;
XmlDoc.Load(filename);
XmlNode n = XmlDoc.DocumentElement.SelectSingleNode(xPath);
if(n != null)
{
result = n.InnerText;
}
//写入
string xPath,string values
XmlDoc.Load(filename);
XmlNode node_w = XmlDoc.DocumentElement.SelectSingleNode(xPath);
if(node != null)
{
node_w.InnerText = values;
XmlTextWriter writer = new XmlTextWriter(filename,null);
writer.Formatting = Formatting.Indented;
XmlDoc.Save(writer);
writer.Close();
writer = null;
}
Top
3 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2006-03-03 17:43:19 得分 5
string s = @"<APEList Version='1.0'><APE type='0x30'><parameter id='1'><value>Management History policy returned an error.</value></parameter></APE></APEList>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(s);
XmlNode node = doc.SelectSingleNode("/APEList/APE/parameter/value");
node.InnerText = "111";//修改你想要的结果,
Console.WriteLine(doc.OuterXml);//输出最后的字符串Top




