我现在有一段XML文件 如下
<商品信息>
<茶>
<名称>绿茶</名称>
<类型>低糖</类型>
<单价>3.5</单价>
<产地>嘎嘎公司</产地>
<容量>1.25</容量>
<库存>5</库存>
</茶>
<咖啡>
<名称>黑咖啡</名称>
<类型>无糖</类型>
<单价>3</单价>
<产地>笑笑公司</产地>
<容量>2</容量>
<库存>3</库存>
</咖啡>
</商品信息>请问 (例如说)我如何修改 茶下面的产地的InterText内容
我是用XPATH读取的 只要知道 <茶>标签 和它的子节点的<产地>标签就能修改其内的值??
<商品信息>
<茶>
<名称>绿茶</名称>
<类型>低糖</类型>
<单价>3.5</单价>
<产地>嘎嘎公司</产地>
<容量>1.25</容量>
<库存>5</库存>
</茶>
<咖啡>
<名称>黑咖啡</名称>
<类型>无糖</类型>
<单价>3</单价>
<产地>笑笑公司</产地>
<容量>2</容量>
<库存>3</库存>
</咖啡>
</商品信息>请问 (例如说)我如何修改 茶下面的产地的InterText内容
我是用XPATH读取的 只要知道 <茶>标签 和它的子节点的<产地>标签就能修改其内的值??
{
try
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(filename);
XmlNode root = xmldoc.SelectSingleNode(xpath);
Page p = new Page();
if (Attributes != null)
{
foreach (KeyValuePair<string, string> k in Attributes)
{
root.Attributes[k.Key].Value =p.Server.HtmlEncode(k.Value);
}
}
root.InnerXml =p.Server.HtmlEncode(value);
xmldoc.Save(filename);
return true;
}
catch(Exception ex)
{
errMessage = ex.Message;
return false;
}
}
参考
xmlDoc.Load(PATH);
XmlNode node = xmlDoc.SelectSingleNode("商品信息/茶/产地");
node.InnerText = "安徽";
xmlDoc.Save(PATH);path 指的是你的xml的路径 "安徽" 就是你要加入的地点
那如果我的标签上 有2个茶 用type来分别 怎么用XMLDOC.SELECTSINGLENODE来区别开??例如说下面的 我想取得 type="red"的产地 如何实现?如果用XMLELEMENTLIST的话 效率会低点吧 有直接判断TYPE然后取得RED的产地?
<茶 type="red">
<名称>绿茶 </名称>
<类型>低糖 </类型>
<单价>3.5 </单价>
<产地>嘎嘎1公司 </产地>
<容量>1.25 </容量>
<库存>5 </库存>
</茶>
<茶 type="green">
<名称>绿茶 </名称>
<类型>低糖 </类型>
<单价>3.51 </单价>
<产地>嘎嘎2公司 </产地>
<容量>1.252 </容量>
<库存>2 </库存>
</茶>
//避免
XmlDocument xmld = new XmlDocument();
xmld.LoadXml(sXML);
txtName.Text = xmld.SelectSingleNode( "/packet/child").InnerText;
//推荐
XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
XPathNavigator xnav = xmldContext.CreateNavigator();
XPathNodeIterator xpNodeIter = xnav.Select( "packet/child");
iCount = xpNodeIter.Count;
xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);
while(xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+ ",";
}