关于xml与string的操作问题

cdo 2006-03-03 04:32:51
我现在有一个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.
...全文
175 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovefootball 2006-03-03
  • 打赏
  • 举报
回复
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);//输出最后的字符串
xinyangt 2006-03-03
  • 打赏
  • 举报
回复

你要修改的是时候不用 把整个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;
}

xinyangt 2006-03-03
  • 打赏
  • 举报
回复
下面的示例使用 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中的例子

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧