怎么读写XML中某个节点的值呢?

www_datasky_cn 2007-06-29 10:35:55
环境:vs2005 、c#、asp.net,
我想取得“系统001”,“对象002”里面的“orderType”的值,请问如何读取呢?
如果我现在想增加一个“系统003”,然后再在“系统003”里面增加“对象008”应该怎么增加节点呢?
总体就是下面这样的XML怎么进行节点的读、改、增、删呢?
请提供较为详细的代码,万分感谢!
<myStyle>
<system sysName="系统001">
<object objName="对象001">
<orderField>id</orderField>
<orderType>0</orderType>
</object>
<object objName="对象002">
<orderField>id</orderField>
<orderType>0</orderType>
</object>
</system>
<system sysName="系统002">
<object objName="对象003">
<orderField>id</orderField>
<orderType>0</orderType>
</object>
<object objName="对象004">
<orderField>id</orderField>
<orderType>0</orderType>
</object>
</system>
</myStyle>
...全文
453 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lalaliu 2007-06-29
  • 打赏
  • 举报
回复
如果你的XML文件比较大,DOM操作就比较占内存
可以看看 "修改大型 XML 文件的有效方法" http://www.microsoft.com/china/MSDN/library/data/xml/largexml.mspx?mfr=true
lalaliu 2007-06-29
  • 打赏
  • 举报
回复
xml中的添加、删除、修改、创建
代码就不贴了,参见 http://www.eiya.net/Article_216.aspx
kyo_zy 2007-06-29
  • 打赏
  • 举报
回复
//xmlPath=xml文件的路径,section=XX父节点,key=下面XX子结点,value=值
public void Write(string xmlPath, string section, string key, object value)
{
if (value == null) return;
section = section.Trim().ToLower();
key = key.Trim().ToLower();
XmlReader reader = new XmlTextReader(xmlPath);
XmlDocument doc = new XmlDocument()
doc.Load(reader);
XmlNode root = doc.DocumentElement;
XmlNode sectionNode = root.SelectSingleNode(section);
XmlNode keyNode = sectionNode.SelectSingleNode(key);
keyNode.InnerText = value.ToString();
}

private IList InternalCollectionByXml(string xmlPath, string section)
{
IList list = new ArrayList();
XmlReader reader = new XmlTextReader(xmlPath);
doc.Load(reader);
XmlNode root = doc.DocumentElement;
XmlNodeList nodeList = root.SelectNodes(section);
foreach (XmlNode node in nodeList)
{
list.Add(node.InnerText);
}
return list;
}


private XmlNode GetNode(string xmlPath,string section, string key)
{
XmlReader reader = new XmlTextReader(xmlPath);
XmlDocument doc = new XmlDocument()
doc.Load(reader);
XmlNode root = doc.DocumentElement;

XmlNode sectionNode = root.SelectSingleNode(section);
if (sectionNode == null)
{
return null;
}
XmlNode node = sectionNode.SelectSingleNode(key);
return node;
}
Snowdust 2007-06-29
  • 打赏
  • 举报
回复
// 读取值
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(Server.MapPath("style.xml"));
XmlNode node = doc.SelectSingleNode("/myStyle/system[@sysName='系统001']/object[@objName='对象001']/orderType");
string str = node.ChildNodes[0].Value;

// 插入系统003子节点
node = doc.SelectSingleNode("/myStyle");
XmlNode node2 = doc.CreateNode(XmlNodeType.Element, "system", string.Empty);
XmlAttribute att2 = doc.CreateAttribute("sysName");
att2.Value = "系统003";
node2.Attributes.Append(att2);
node.AppendChild(node2);

// 在系统003节点上插入对象008节点
XmlNode node3 = doc.CreateNode(XmlNodeType.Element, "object", string.Empty);
XmlAttribute att3 = doc.CreateAttribute("objName");
att3.Value = "对象008";
node3.Attributes.Append(att3);
node2.AppendChild(node3);

// 保存
doc.Save(Server.MapPath("style.xml"));
netusemaster 2007-06-29
  • 打赏
  • 举报
回复
private void ReadXML()
{
DataSet ds = new DataSet();
string DataBase = "";
string PassWord = "";
string UserID = "";
string Server = "";

ds.ReadXml(Application.StartupPath + @"\MyXML.Xml");
dataGridView1.DataSource = ds.Tables[0];

XmlTextReader reader;
reader = new XmlTextReader(Application.StartupPath + @"\MyXML.Xml");

while (reader.Read())
{
if ((reader.NodeType == XmlNodeType.EndElement) && (reader.Name == "Connection"))
{
break;
}

if (reader.IsStartElement("DataBase"))
{
reader.Read();
DataBase = reader.Value;
}

if (reader.IsStartElement("PassWord"))
{
reader.Read();
PassWord = reader.Value;
}

if (reader.IsStartElement("UserID"))
{
reader.Read();
UserID = reader.Value;
}

if (reader.IsStartElement("Server"))
{
reader.Read();
Server = reader.Value;
}
}
}
--------------------------------

<Connection>
<DataBase>myDataBase</DataBase>
<PassWord>myPassWord</PassWord>
<UserID>MyUserID</UserID>
<Server>myServer</Server>
</Connection>





Snowdust 2007-06-29
  • 打赏
  • 举报
回复
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(Server.MapPath("style.xml"));
XmlNode node = doc.SelectSingleNode("/myStyle/system[@sysName='系统001']/object[@objName='对象001']/orderType");
string str = node.ChildNodes[0].Value;
newtimmy 2007-06-29
  • 打赏
  • 举报
回复
用System.Xml里面的 xmldocument对象,对其中的node值和property进行读取,也可以进行移除,具体可以到网上查查看,相关的例子很多的
lovefootball 2007-06-29
  • 打赏
  • 举报
回复
Google一大把

http://www.kingmx.com/article/15249?&keywords=%E5%9C%A8C

还可以配合XPath操作
孟子E章 2007-06-29
  • 打赏
  • 举报
回复
XmlNode d = doc.SelectSingleNode("/myStyle/system[@sysName='系统001']/object[@objName='对象002']/orderType");
d.InnerText
chenshuliang 2007-06-29
  • 打赏
  • 举报
回复
留下邮箱,,发给你例子
comeon_data 2007-06-29
  • 打赏
  • 举报
回复
www.knowsky.com/340889.html
www.webasp.net/article/27/26291.htm
NealShi 2007-06-29
  • 打赏
  • 举报
回复
强,学习了

110,536

社区成员

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

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

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