C# XML解析以获取XElement列表中的特定标记值
我有下面的XML和c代码。 我想在标签中显示的列表中获得像333382这样的值列表 然而,通过下面的代码,我得到了整个事件标记的列表,比如{Event=333},{Event=382} 我可以编写更多的逻辑代码,只从中获得数字部分,但为了代码效率,最好通过LINQ在事件列表中获得所需的值,如333382 有人能帮忙吗?提前谢谢C# XML解析以获取XElement列表中的特定标记值,c#,xml,linq,xelement,C#,Xml,Linq,Xelement,我有下面的XML和c代码。 我想在标签中显示的列表中获得像333382这样的值列表 然而,通过下面的代码,我得到了整个事件标记的列表,比如{Event=333},{Event=382} 我可以编写更多的逻辑代码,只从中获得数字部分,但为了代码效率,最好通过LINQ在事件列表中获得所需的值,如333382 有人能帮忙吗?提前谢谢 using System; using System.Collections.Generic; using System.Linq; using System.Text.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string eventListXML= @"<XYZ>
<Task>
<ABC>
<EvtLogResponse>
<LogInfo>
<CommID>8</CommID>
<UserId>2</UserId>
<Date>10/09/2020</Date>
<Time>06:24:01 PM</Time>
</LogInfo>
<EventLogAllRes>
<EventOrRestore>E</EventOrRestore>
<Event>333</Event>
</EventLogAllRes>
<EventLogAllRes>
<EventOrRestore>E</EventOrRestore>
<Event>382</Event>
</EventLogAllRes>
<FilePath>C:\Windows\test.txt</FilePath>
</EvtLogResponse>
<UserID>1</UserID>
</ABC>
</Task>
</XYZ>";
XDocument xDoc = XDocument.Parse(eventListXML);
XElement Xele = xDoc.Element("XYZ").Element("Task").Element("ABC").Element("EvtLogResponse");
List<XElement> Logs = Xele.Elements("EventLogAllRes").ToList<XElement>();
var eventList = (from Event in Logs.Descendants("Event")
select new
{
Event = Event.Value
}).ToList();
}
}
}
你希望它像整数列表一样,对吗 只需删除并创建一个新事件,代码如下
var eventList = (from Event in Logs.Descendants("Event")
select
Regex.Replace(Event.Value.ToString(), "[^0-9]+", string.Empty)).ToList();
此外,如果希望使用逗号分隔的值,请将下面的代码添加到上面的代码中
var result = String.Join(",", eventList);
这里的结果将使用逗号分隔的字符串
如果还需要更多信息,请告诉我。看起来您只需要删除新的{Event=和相应的}。虽然是尾随,但我想知道是否还有更多代码。var values=XDocument.ParseeventListXML.ElementXYZ.ElementTask.ElementABC.ElementEvtLogResponse.ElementsEventLogAllRes.Selectx=>x.ElementEvent.Value@谢谢你!请你把它作为一个答案,我也会接受的。试试下面的:Event.SetValuestring.Empty;Thx,但不是很优雅的答案。喜欢像@Price Khanna这样的较轻的东西。您还可以使用XPath查询,如EXDocument.ParseeventListXML.XPathSelectElements//Event.Selectx=>x.Value。