📄 xmleditor.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace ChangeXMLPrj
{
public class XMLEditor
{
private string mXmlFullName;
private XmlDocument docmodel = null;
/// <summary>
/// 有参构造
/// </summary>
/// <param name="xmlFullName">xml文件名称(含路径),不能为空</param>
public XMLEditor(string xmlFullName)
{
if (string.IsNullOrEmpty(xmlFullName))
{
throw new Exception("Parameter fullName could not be null or empty!");
}
mXmlFullName = xmlFullName;
docmodel = new XmlDocument();
docmodel.Load(mXmlFullName);
}
/// <summary>
/// 获取指定节点tag
/// </summary>
/// <param name="tag"></param>
/// <returns></returns>
public XmlNode[] getNodeWithTag(string tag)
{
try
{
XmlNodeList nodelist = docmodel.GetElementsByTagName(tag);//SelectNodes(tag);
XmlNode[] list = new XmlNode[nodelist.Count];
for (int i = 0; i < nodelist.Count; i++)
{
list[i] = nodelist.Item(i);
}
return list;
}
catch (Exception ex)
{
throw new ArgumentNullException("Doc file!"+ " "+ex.Message);
}
return null;
}
/// <summary>
/// 关闭文档
/// </summary>
/// <param name="dosave"></param>
public void CloseXMLDoc(bool dosave)
{
try
{
if (docmodel == null) return;
if (dosave)
{
docmodel.Save(mXmlFullName);
}
docmodel = null;
}
catch (Exception ex)
{
throw new ArgumentException("daw");
}
}
/// <summary>
/// 获得节点元素值
/// 注意:若存在同名节点,获取的是同名节点中最后一个节点
/// </summary>
/// <param name="elementName">节点元素名称</param>
/// <returns>元素值字符串</returns>
public string GetElementString(string elementName)
{
try
{
// 检查参数
if (string.IsNullOrEmpty(elementName))
{
}
XmlTextReader xtr;
xtr = new XmlTextReader(mXmlFullName);
string elementString = "";
while (xtr.Read())
{
if (elementName == xtr.Name)
{
elementString = xtr.ReadElementContentAsString();
}
}
xtr.Close();
return elementString;
}
catch (Exception ex)
{
throw new Exception("" + ex.Source);
//return null;
}
}
/// <summary>
/// 设置节点元素值
/// 注意:若存在同名节点,获取的是同名节点中最后一个节点
/// </summary>
/// <param name="parentNodeName">父节点元素名称</param>
/// <param name="childNodeName">该节点元素名称</param>
/// <param name="value">元素值字符串</param>
public void SetElementString(string parentNodeName, string childNodeName, string value)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(mXmlFullName);
XmlNodeList nodeList = xmlDoc.SelectSingleNode(parentNodeName).ChildNodes;
foreach (XmlNode xn in nodeList)
{
if (childNodeName == xn.Name)
{
xn.InnerText = value;
xmlDoc.Save(mXmlFullName);
return;
}
}
}
public bool UpdateXmlRefTypeAttrbution(XmlNode node,string value)
{
string tag = "xsi:type";
if (node.Attributes.Count == 0 || node.Attributes[tag] == null) return false;
node.Attributes[tag].Value = value;
return true;
}
public bool UpdateChildValue(XmlNode node, string childname, string childInner)
{
if (node.HasChildNodes == false)
{
return false;
}
for (int i = 0; i < node.ChildNodes.Count; i++)
{
if (node.ChildNodes[i].Name.ToUpper() == childname.ToUpper())
{
node.ChildNodes[i].InnerText = childInner;
return true;
}
}
XmlElement ele= docmodel.CreateElement("WKT");
ele.InnerText=childInner;
node.InsertBefore(ele as XmlNode,node.ChildNodes[0]);
return true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -