I don’t use XML too much during the development process. When I need to use it, I try to find a way around it. Recently, a colleague gave me a detailed operation. Share it
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xml; namespace RenShiExport { /// <summary> /// XMLHelper XML文档操作管理器 /// </summary> public class XMLHelper { public XMLHelper() { // // TODO: 在此处添加构造函数逻辑 // } #region XML文档节点查询和读取 /// <summary> /// 选择匹配XPath表达式的第一个节点XmlNode. /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名")</param> /// <returns>返回XmlNode</returns> public static XmlNode GetXmlNodeByXpath(string xmlFileName, string xpath) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); return xmlNode; } catch (Exception ex) { return null; //throw ex; //这里可以定义你自己的异常处理 } } /// <summary> /// 选择匹配XPath表达式的节点列表XmlNodeList. /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名")</param> /// <returns>返回XmlNodeList</returns> public static XmlNodeList GetXmlNodeListByXpath(string xmlFileName, string xpath) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNodeList xmlNodeList = xmlDoc.SelectNodes(xpath); return xmlNodeList; } catch (Exception ex) { return null; //throw ex; //这里可以定义你自己的异常处理 } } /// <summary> /// 选择匹配XPath表达式的第一个节点的匹配xmlAttributeName的属性XmlAttribute. /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param> /// <returns>返回xmlAttributeName</returns> public static XmlAttribute GetXmlAttribute(string xmlFileName, string xpath, string xmlAttributeName) { string content = string.Empty; XmlDocument xmlDoc = new XmlDocument(); XmlAttribute xmlAttribute = null; try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); if (xmlNode != null) { if (xmlNode.Attributes.Count > 0) { xmlAttribute = xmlNode.Attributes[xmlAttributeName]; } } } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return xmlAttribute; } #endregion #region XML文档创建和节点或属性的添加、修改 /// <summary> /// 创建一个XML文档 /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="rootNodeName">XML文档根节点名称(须指定一个根节点名称)</param> /// <param name="version">XML文档版本号(必须为:"1.0")</param> /// <param name="encoding">XML文档编码方式</param> /// <param name="standalone">该值必须是"yes"或"no",如果为null,Save方法不在XML声明上写出独立属性</param> /// <returns>成功返回true,失败返回false</returns> public static bool CreateXmlDocument(string xmlFileName, string rootNodeName, string version, string encoding, string standalone) { bool isSuccess = false; try { XmlDocument xmlDoc = new XmlDocument(); XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration(version, encoding, standalone); XmlNode root = xmlDoc.CreateElement(rootNodeName); xmlDoc.AppendChild(xmlDeclaration); xmlDoc.AppendChild(root); xmlDoc.Save(xmlFileName); isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } /// <summary> /// 依据匹配XPath表达式的第一个节点来创建它的子节点(如果此节点已存在则追加一个新的同名节点 /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <param name="xmlNodeName">要匹配xmlNodeName的节点名称</param> /// <param name="innerText">节点文本值</param> /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param> /// <param name="value">属性值</param> /// <returns>成功返回true,失败返回false</returns> public static bool CreateXmlNodeByXPath(string xmlFileName, string xpath, string xmlNodeName, string innerText, string xmlAttributeName, string value) { bool isSuccess = false; XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); if (xmlNode != null) { //存不存在此节点都创建 XmlElement subElement = xmlDoc.CreateElement(xmlNodeName); subElement.InnerXml = innerText; //如果属性和值参数都不为空则在此新节点上新增属性 if (!string.IsNullOrEmpty(xmlAttributeName) && !string.IsNullOrEmpty(value)) { XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName); xmlAttribute.Value = value; subElement.Attributes.Append(xmlAttribute); } xmlNode.AppendChild(subElement); } xmlDoc.Save(xmlFileName); //保存到XML文档 isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } /// <summary> /// 依据匹配XPath表达式的第一个节点来创建或更新它的子节点(如果节点存在则更新,不存在则创建) /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <param name="xmlNodeName">要匹配xmlNodeName的节点名称</param> /// <param name="innerText">节点文本值</param> /// <returns>成功返回true,失败返回false</returns> public static bool CreateOrUpdateXmlNodeByXPath(string xmlFileName, string xpath, string xmlNodeName, string innerText) { bool isSuccess = false; bool isExistsNode = false;//标识节点是否存在 XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); if (xmlNode != null) { //遍历xpath节点下的所有子节点 foreach (XmlNode node in xmlNode.ChildNodes) { if (node.Name.ToLower() == xmlNodeName.ToLower()) { //存在此节点则更新 node.InnerXml = innerText; isExistsNode = true; break; } } if (!isExistsNode) { //不存在此节点则创建 XmlElement subElement = xmlDoc.CreateElement(xmlNodeName); subElement.InnerXml = innerText; xmlNode.AppendChild(subElement); } } xmlDoc.Save(xmlFileName); //保存到XML文档 isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } /// <summary> /// 依据匹配XPath表达式的第一个节点来创建或更新它的属性(如果属性存在则更新,不存在则创建) /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <param name="xmlAttributeName">要匹配xmlAttributeName的属性名称</param> /// <param name="value">属性值</param> /// <returns>成功返回true,失败返回false</returns> public static bool CreateOrUpdateXmlAttributeByXPath(string xmlFileName, string xpath, string xmlAttributeName, string value) { bool isSuccess = false; bool isExistsAttribute = false;//标识属性是否存在 XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); if (xmlNode != null) { //遍历xpath节点中的所有属性 foreach (XmlAttribute attribute in xmlNode.Attributes) { if (attribute.Name.ToLower() == xmlAttributeName.ToLower()) { //节点中存在此属性则更新 attribute.Value = value; isExistsAttribute = true; break; } } if (!isExistsAttribute) { //节点中不存在此属性则创建 XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(xmlAttributeName); xmlAttribute.Value = value; xmlNode.Attributes.Append(xmlAttribute); } } xmlDoc.Save(xmlFileName); //保存到XML文档 isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } #endregion #region XML文档节点或属性的删除 /// <summary> /// 删除匹配XPath表达式的第一个节点(节点中的子元素同时会被删除) /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <returns>成功返回true,失败返回false</returns> public static bool DeleteXmlNodeByXPath(string xmlFileName, string xpath) { bool isSuccess = false; XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); if (xmlNode != null) { //删除节点 xmlNode.ParentNode.RemoveChild(xmlNode); } xmlDoc.Save(xmlFileName); //保存到XML文档 isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } /// <summary> /// 删除匹配XPath表达式的第一个节点中的匹配参数xmlAttributeName的属性 /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <param name="xmlAttributeName">要删除的xmlAttributeName的属性名称</param> /// <returns>成功返回true,失败返回false</returns> public static bool DeleteXmlAttributeByXPath(string xmlFileName, string xpath, string xmlAttributeName) { bool isSuccess = false; bool isExistsAttribute = false; XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); XmlAttribute xmlAttribute = null; if (xmlNode != null) { //遍历xpath节点中的所有属性 foreach (XmlAttribute attribute in xmlNode.Attributes) { if (attribute.Name.ToLower() == xmlAttributeName.ToLower()) { //节点中存在此属性 xmlAttribute = attribute; isExistsAttribute = true; break; } } if (isExistsAttribute) { //删除节点中的属性 xmlNode.Attributes.Remove(xmlAttribute); } } xmlDoc.Save(xmlFileName); //保存到XML文档 isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } /// <summary> /// 删除匹配XPath表达式的第一个节点中的所有属性 /// </summary> /// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param> /// <param name="xpath">要匹配的XPath表达式(例如:"//节点名//子节点名</param> /// <returns>成功返回true,失败返回false</returns> public static bool DeleteAllXmlAttributeByXPath(string xmlFileName, string xpath) { bool isSuccess = false; XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(xmlFileName); //加载XML文档 XmlNode xmlNode = xmlDoc.SelectSingleNode(xpath); if (xmlNode != null) { //遍历xpath节点中的所有属性 xmlNode.Attributes.RemoveAll(); } xmlDoc.Save(xmlFileName); //保存到XML文档 isSuccess = true; } catch (Exception ex) { throw ex; //这里可以定义你自己的异常处理 } return isSuccess; } #endregion } }
The above is the detailed content of Sample code detailing XML operation summary. For more information, please follow other related articles on the PHP Chinese website!

RSS documents are XML-based structured files used to publish and subscribe to frequently updated content. Its main functions include: 1) automated content updates, 2) content aggregation, and 3) improving browsing efficiency. Through RSSfeed, users can subscribe and get the latest information from different sources in a timely manner.

The XML structure of RSS includes: 1. XML declaration and RSS version, 2. Channel (Channel), 3. Item. These parts form the basis of RSS files, allowing users to obtain and process content information by parsing XML data.

RSSfeedsuseXMLtosyndicatecontent;parsingtheminvolvesloadingXML,navigatingitsstructure,andextractingdata.Applicationsincludebuildingnewsaggregatorsandtrackingpodcastepisodes.

RSS documents work by publishing content updates through XML files, and users subscribe and receive notifications through RSS readers. 1. Content publisher creates and updates RSS documents. 2. The RSS reader regularly accesses and parses XML files. 3. Users browse and read updated content. Example of usage: Subscribe to TechCrunch's RSS feed, just copy the link to the RSS reader.

The steps to build an RSSfeed using XML are as follows: 1. Create the root element and set the version; 2. Add the channel element and its basic information; 3. Add the entry element, including the title, link and description; 4. Convert the XML structure to a string and output it. With these steps, you can create a valid RSSfeed from scratch and enhance its functionality by adding additional elements such as release date and author information.

The steps to create an RSS document are as follows: 1. Write in XML format, with the root element, including the elements. 2. Add, etc. elements to describe channel information. 3. Add elements, each representing a content entry, including,,,,,,,,,,,. 4. Optionally add and elements to enrich the content. 5. Ensure the XML format is correct, use online tools to verify, optimize performance and keep content updated.

The core role of XML in RSS is to provide a standardized and flexible data format. 1. The structure and markup language characteristics of XML make it suitable for data exchange and storage. 2. RSS uses XML to create a standardized format to facilitate content sharing. 3. The application of XML in RSS includes elements that define feed content, such as title and release date. 4. Advantages include standardization and scalability, and challenges include document verbose and strict syntax requirements. 5. Best practices include validating XML validity, keeping it simple, using CDATA, and regularly updating.

RSSfeedsareXMLdocumentsusedforcontentaggregationanddistribution.Totransformthemintoreadablecontent:1)ParsetheXMLusinglibrarieslikefeedparserinPython.2)HandledifferentRSSversionsandpotentialparsingerrors.3)Transformthedataintouser-friendlyformatsliket


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Dreamweaver Mac version
Visual web development tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.