gpt4 book ai didi

c# - 如何在 C# 中获取元素中的 XML 属性

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

您好,我希望有人能帮助我,我一直在努力获取 XML 文件中的特定文本,但到目前为止没有成功。我进行了很多研究,到目前为止,在互联网上可以找到的所有项目都没有帮助。

我正在尝试读取由第三方应用程序生成的导出的 XML 文件。现在我开始怀疑是否根据正确的 XML 规则设置了 XML?我有以下一段 XML:

<?xml version="1.0" encoding="utf-8"?>
<Document>
<DocumentInfo>
<Created>2016-05-23T13:19:41.0528572Z</Created>
<ExportSetting>None</ExportSetting>
<InstalledProducts>
<Product>
<DisplayName>Some display name</DisplayName>
<DisplayVersion>Some display version</DisplayVersion>
</Product>
<OptionPackage>
<DisplayName>Some display name</DisplayName>
<DisplayVersion>Some display version</DisplayVersion>
</OptionPackage>
<Product>
<DisplayName>Some display name</DisplayName>
<DisplayVersion>Some display version</DisplayVersion>
</Product>
<OptionPackage>
<DisplayName>Some display name</DisplayName>
<DisplayVersion>Some display version</DisplayVersion>
</OptionPackage>
<Product>
<DisplayName>Some display name</DisplayName>
<DisplayVersion>Some display version</DisplayVersion>
</Product>
</InstalledProducts>
</DocumentInfo>
<Some.Block ID="0">
<AttributeList>
<Interface>
<Sections xmlns="http://www.somenamespace.com">
<Section Name="Input">
<Member Name="Member name 1" Datatype="Bool" />
<Member Name="Member name 2" Datatype="Int" />
<Member Name="Member name 3" Datatype="Int" />
</Section>

获取显示名称元素等是没有问题的,因为这似乎是正常的 xml 代码,但第二部分相当困难。

我只想提取属性名称为“输入”的部分的成员属性“名称”和“数据类型”的值。

我已经用 XMLPath、getNodebytagname 等尝试了很多事情

试过这个:

xmlnode = doc.GetElementsByTagName("Sections");
for (i = 0; i <= xmlnode.Count - 1; i++)
{
xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
str = xmlnode[i].ChildNodes.Item(0).InnerText.Trim() + " " + xmlnode[i].ChildNodes.Item(1).InnerText.Trim() + " " + xmlnode[i].ChildNodes.Item(2).InnerText.Trim();
MessageBox.Show(str);
}

并尝试了这个:

//XmlNodeList elemList = doc.GetElementsByTagName("Section[@Name='Input']");
//for (int x = 0; x < elemList.Count; x++)
//{
// string attrVal = elemList[x].Attributes["Interface"].Value;
//}

到目前为止,没有任何效果,代码似乎无法超出 namespace 部分。有人有想法吗?

最佳答案

这样做会:

XmlNodeList nodes = doc.GetElementsByTagName("Section");

Dictionary<string, string> list = new Dictionary<string, string>();
foreach (XmlNode node in nodes)
{
if (node.Attributes != null && node.Attributes["Name"] != null && node.Attributes["Name"].Value == "Input")
{
foreach (XmlNode childNode in node.ChildNodes)
{
if (childNode.Attributes != null)
list.Add(childNode.Attributes["Name"].Value, childNode.Attributes["Datatype"].Value);
}
}
}

您将拥有一个格式为 <Name, Datatype> 的字典

关于c# - 如何在 C# 中获取元素中的 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37485698/

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