如何多次在 XML 文件中找到特定属性?
How could I find specific attribute in XML file multiple time?
我有一个 XML 文档 :
<Results>
<ResultSet "nothing special" Description="More of nothing" type="system">
<Results1>
<time>
<Body type="system" datatype="int"></Body>
<att2 type="session" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="int"></ID>
<Stuff type="session" datatype="float"></Stuff>
</Result>
<Result>
<att1 type="system" datatype="int"></att1>
<att2 type="session" datatype="int"></att2>
</Result>
</Results1>
<Results2>
<time>
<att1 type="session" datatype="int"></att1>
<att2 type="system" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="float"></ID>
</Result>
</Results2>
</ResultSet>
</Results>
我想使用 C# 获取列表中文档中每个 type = "session"
的路径。目前,我有一个获取路径 XPath
的函数。但是我完全不知道如何在所有 XML 中搜索,无论节点如何。
我正在使用 LINQ to XML、.NET Framework 3.5,这就是我目前拥有的:
List<string> pathList = new List<string>();
IEnumerable<XElement> path =
from element in doc.Elements(/*I don't know*/)
where (string)element.Attribute("type") == "session"
select element;
foreach (XElement element in path)
{
pathList.Add(getPath(element));
}
您的 XML 没有一个 XML 属性。 您只有带有文本内容的元素。
您的意思是:
<Results>
<ResultSet "nothing special" Description="More of nothing" type="system">
<Results1>
<time>
<Body type="system" datatype="int"></Body>
<att2 type="session" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="int"></ID>
<Stuff type="session" datatype="float"></Stuff>
</Result>
<Result>
<att1 type="system" datatype="int"></att1>
<att2 type="session" datatype="int"></att2>
</Result>
</Results1>
<Results2>
<time>
<att1 type="session" datatype="int"></att1>
<att2 type="system" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="float"></ID>
</Result>
</Results2>
</ResultSet>
</Results>
??
您可以使用doc.Descendants()
获取所有后代元素:
IEnumerable<XElement> path =
from element in doc.Descendants()
where (string)element.Attribute("type") == "session"
select element;
我有一个 XML 文档 :
<Results>
<ResultSet "nothing special" Description="More of nothing" type="system">
<Results1>
<time>
<Body type="system" datatype="int"></Body>
<att2 type="session" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="int"></ID>
<Stuff type="session" datatype="float"></Stuff>
</Result>
<Result>
<att1 type="system" datatype="int"></att1>
<att2 type="session" datatype="int"></att2>
</Result>
</Results1>
<Results2>
<time>
<att1 type="session" datatype="int"></att1>
<att2 type="system" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="float"></ID>
</Result>
</Results2>
</ResultSet>
</Results>
我想使用 C# 获取列表中文档中每个 type = "session"
的路径。目前,我有一个获取路径 XPath
的函数。但是我完全不知道如何在所有 XML 中搜索,无论节点如何。
我正在使用 LINQ to XML、.NET Framework 3.5,这就是我目前拥有的:
List<string> pathList = new List<string>();
IEnumerable<XElement> path =
from element in doc.Elements(/*I don't know*/)
where (string)element.Attribute("type") == "session"
select element;
foreach (XElement element in path)
{
pathList.Add(getPath(element));
}
您的 XML 没有一个 XML 属性。 您只有带有文本内容的元素。
您的意思是:
<Results>
<ResultSet "nothing special" Description="More of nothing" type="system">
<Results1>
<time>
<Body type="system" datatype="int"></Body>
<att2 type="session" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="int"></ID>
<Stuff type="session" datatype="float"></Stuff>
</Result>
<Result>
<att1 type="system" datatype="int"></att1>
<att2 type="session" datatype="int"></att2>
</Result>
</Results1>
<Results2>
<time>
<att1 type="session" datatype="int"></att1>
<att2 type="system" datatype="float"></att2>
</Result>
<Result>
<ID type="system" datatype="float"></ID>
</Result>
</Results2>
</ResultSet>
</Results>
??
您可以使用doc.Descendants()
获取所有后代元素:
IEnumerable<XElement> path =
from element in doc.Descendants()
where (string)element.Attribute("type") == "session"
select element;