gpt4 book ai didi

c# - 如何在 .NET C# 中查找特定的 XML 标记

转载 作者:数据小太阳 更新时间:2023-10-29 02:49:18 25 4
gpt4 key购买 nike

假设我有这个 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<config>
<atag>
<element1 att="value" />
<element2 att="othervalue"/>
</atag>
<othertag>
<element1 att="value" />
<element2 att="othervalue"/>
</othertag>
</config>

访问属性 att 的最佳方式是什么?在<element2><othertag> 下.

我目前正在使用这个:

XmlDocument doc = new XmlDocument();
String srR = SPContext.Current.Web.Url.ToString() + "config.xml";
WebRequest refF = WebRequest.Create(srR);
refF.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse resFF = (HttpWebResponse)refF.GetResponse();
doc.Load(resFF.GetResponseStream());
XmlNodeList nodes = doc.GetElementsByTagName("othertag");

XmlNode ParentNodes = nodes[0];
foreach (XmlNode ParentNode in ParentNodes.ChildNodes)
{
if (ParentNode.LocalName == "element2")
{
string value = ParentNode.Attributes["att"].InnerText.ToString();
}
}

它正在做这项工作,但我认为它太重了,特别是我在一个 ashx 文件上使用它,每当我在下拉列表中更改一个值时加载该文件并且 XML 文件非常大(大约 155kb) .

有什么办法可以改善吗?

最佳答案

我会使用 LINQ to XML——像这样:

XDocument doc = XDocument.Load(...);
var attribute = doc.Element("config")
.Element("othervalue")
.Element("element2")
.Attribute("att");

var attributeValue = (string) attribute;

请注意,如果缺少任何元素,这将失败 - 对于任何失败都会在最后返回 null 的替代方法是:

var attribute = doc.Elements("config")
.Elements("othervalue")
.Elements("element2")
.Attributes("att")
.FirstOrDefault();

var attributeValue = (string) attribute;

如果您是 LINQ to XML 的新手,您应该阅读完整的教程或类似的东西,而不仅仅是使用上面的代码。不过,它是一个很棒的 AP​​I - 比 XmlDocument 好得多。

关于c# - 如何在 .NET C# 中查找特定的 XML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com