2023-09-07 07:00:03

如何解析XML文件?

c#中是否有解析XML文件的简单方法?如果有,是什么?


当前回答

我不确定是否存在“解析XML的最佳实践”。有许多技术适用于不同的情况。使用哪种方式取决于具体的场景。

你可以用LINQ转换成XML、XmlReader、XPathNavigator甚至正则表达式。如果你详细说明你的需求,我可以试着提出一些建议。

其他回答

您可以使用System.Xml.Linq库解析XML。下面是我用来解析XML文件的示例代码

public CatSubCatList GenerateCategoryListFromProductFeedXML()
{
    string path = System.Web.HttpContext.Current.Server.MapPath(_xmlFilePath);

    XDocument xDoc = XDocument.Load(path);

    XElement xElement = XElement.Parse(xDoc.ToString());


    List<Category> lstCategory = xElement.Elements("Product").Select(d => new Category
    {
        Code = Convert.ToString(d.Element("CategoryCode").Value),
        CategoryPath = d.Element("CategoryPath").Value,
        Name = GetCateOrSubCategory(d.Element("CategoryPath").Value, 0), // Category
        SubCategoryName = GetCateOrSubCategory(d.Element("CategoryPath").Value, 1) // Sub Category
    }).GroupBy(x => new { x.Code, x.SubCategoryName }).Select(x => x.First()).ToList();

    CatSubCatList catSubCatList = GetFinalCategoryListFromXML(lstCategory);

    return catSubCatList;
}

如果你使用的是。net 3.5或更高版本,我会使用LINQ to XML。

如果您使用的是。net 2.0,请尝试XmlReader及其子类XmlTextReader和XmlValidatingReader。它们提供了一种快速、轻量级(内存使用等)、仅向前的方法来解析XML文件。

如果需要XPath功能,请尝试XPathNavigator。如果您需要内存中的整个文档,请尝试XmlDocument。

我不确定是否存在“解析XML的最佳实践”。有许多技术适用于不同的情况。使用哪种方式取决于具体的场景。

你可以用LINQ转换成XML、XmlReader、XPathNavigator甚至正则表达式。如果你详细说明你的需求,我可以试着提出一些建议。

此外,您还可以以以下方式使用XPath选择器(简单地选择特定节点):

XmlDocument doc = new XmlDocument();
doc.Load("test.xml");

var found = doc.DocumentElement.SelectNodes("//book[@title='Barry Poter']"); // select all Book elements in whole dom, with attribute title with value 'Barry Poter'

// Retrieve your data here or change XML here:
foreach (XmlNode book in nodeList)
{
  book.InnerText="The story began as it was...";
}

Console.WriteLine("Display XML:");
doc.Save(Console.Out);

的文档