包含名称空间的XDocument

我尝试使用XDocument查询以下XML:


<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">

    <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">

        <EventID>589828</EventID>

        <Type>3</Type>

        <SubType Name="Information">0</SubType>

        <Level>8</Level>

        <TimeCreated SystemTime="2010-06-01T09:45:15.8102117Z" />

        <Source Name="System.ServiceModel" />

        <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />

        <Execution ProcessName="w3wp" ProcessID="5012" ThreadID="5" />

        <Channel />

        <Computer>TESTSERVER3A</Computer>

    </System>

    <ApplicationData>

        <TraceData>

            <DataItem>

                <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">

                    <TraceIdentifier>http://msdn.microsoft.com/en-GB/library/System.ServiceModel.Activation.WebHostCompilation.aspx</TraceIdentifier>

                    <Description>Webhost compilation</Description>

                    <AppDomain>/LM/W3SVC/257188508/Root-1-129198591101343437</AppDomain>

                    <Source>System.ServiceModel.Activation.ServiceParser/39498779</Source>

                    <ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/StringTraceRecord">

                        <VirtualPath>/Service.svc</VirtualPath>

                    </ExtendedData>

                </TraceRecord>

            </DataItem>

        </TraceData>

    </ApplicationData>

</E2ETraceEvent>

执行以下代码将为xEl1返回null,除非我手动删除名称空间:


XDocument xDoc = XDocument.Parse(CurrentString);

XElement xEl1 = xDoc.Element("E2ETraceEvent");

XElement xEl2 = xEl1.Element("System");

XElement xEl3 = xEl2.Element("Correlation");

XAttribute xAtt1 = xEl3.Attribute("ActivityID");

String sValue = xAtt1.Value;

您如何编写代码以提取XDocument中的Guid?


阿波罗的战车
浏览 417回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP