解析 XDocument
Parsing a XDocument
我有以下 XDocument:
<ExtensionInfo>
<ObjectExtension />
<AttributeExtension>
<Attribute Name="PV" ExtensionType="inputoutputextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="PV" ExtensionType="logdatachangeeventextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="inputoutputextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="booleanextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="alarmextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="logdatachangeeventextension" InheritedFromTagName="$CT_STQ_V2" />
</AttributeExtension>
</ExtensionInfo>
当且仅当属性名称="STS" 和扩展类型="alarmextension"
时,我正在尝试 return $CT_STQ_V2
如何使用 XDocument 和 LINQ 查询来获取我需要的内容。我需要解析数千个 XML 文件,因此需要快速的性能。任何建议都会有所帮助。
谢谢。
您可以使用简单的 Linq
到 Xml
语句实现此目的,我的首选是处理大型 Xml
s .
XDocument doc = XDocument.Load(filename);
var element = doc
.Descendants("AttributeExtension") // flatten the structure and look for extensions.
.Elements("Attribute") // get all attribute elements
.FirstOrDefault(x=>(string)x.Attribute("Name") == "STS" && (string)x.Attribute("ExtensionType") == "alarmextension");
if(element!= null)
{
// return attribute value.
return (string)element.Attribute("InheritedFromTagName");
}
勾选这个Demo
我有以下 XDocument:
<ExtensionInfo>
<ObjectExtension />
<AttributeExtension>
<Attribute Name="PV" ExtensionType="inputoutputextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="PV" ExtensionType="logdatachangeeventextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="inputoutputextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="booleanextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="alarmextension" InheritedFromTagName="$CT_STQ_V2" />
<Attribute Name="STS" ExtensionType="logdatachangeeventextension" InheritedFromTagName="$CT_STQ_V2" />
</AttributeExtension>
</ExtensionInfo>
当且仅当属性名称="STS" 和扩展类型="alarmextension"
时,我正在尝试 return $CT_STQ_V2如何使用 XDocument 和 LINQ 查询来获取我需要的内容。我需要解析数千个 XML 文件,因此需要快速的性能。任何建议都会有所帮助。
谢谢。
您可以使用简单的 Linq
到 Xml
语句实现此目的,我的首选是处理大型 Xml
s .
XDocument doc = XDocument.Load(filename);
var element = doc
.Descendants("AttributeExtension") // flatten the structure and look for extensions.
.Elements("Attribute") // get all attribute elements
.FirstOrDefault(x=>(string)x.Attribute("Name") == "STS" && (string)x.Attribute("ExtensionType") == "alarmextension");
if(element!= null)
{
// return attribute value.
return (string)element.Attribute("InheritedFromTagName");
}
勾选这个Demo