gpt4 book ai didi

c# - 从写入字符串的 xml 文件中删除标签?

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

这是字符串中数据的样子:

<temp><id>TGPU1</id><label>GPU</label><value>67</value></temp><temp><id>THDD1</id><label>ST3320620AS</label><value>34</value></temp><temp><id>FCPU</id><label>CPU</label><value>1430</value></temp>

(还有更多,这只是原始输出的一小部分。)我想做的是通过一些快速代码(不是实际代码的长度,而是执行需要多长时间)来提供它,这将删除所有

<temp><id>TGPU1</id><label>GPU</label><value>

并将其输出到一个新字符串,其值仅介于所有 <value> 之间的和</value>的。我正在寻找字符串中的输出,例如:67341430。
我找到了这段代码:

bool FoundMatch = false;

try {
Regex regex = new Regex(@"<([be])pt[^>]+>.+?</\1pt>");
while(regex.IsMatch(yourstring) ) {
yourstring = regex.Replace(yourstring, "");
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}

但它只删除了 <*pt> ,可以更改它以删除其他内容。但它一次只会删除一个标签。如果我必须删除所有标签,速度不是很快。

谢谢

PS 如果您想知道,下面的代码是我要添加的代码。这也是打印上述原始字符串的代码:

static void Main(string[] args)
{
Console.WriteLine("Memory mapped file reader started");

using (var file = MemoryMappedFile.OpenExisting("sensor"))
{
using (var reader = file.CreateViewAccessor(0, 3800))
{
var encoding = Encoding.ASCII;
Console.WriteLine(encoding.GetString(bytes));
}
}

Console.WriteLine("Press any key to exit ...");
Console.ReadLine();
}

最佳答案

您可以使用 LINQ:

String.Concat(
XElement.Parse(...)
.Descendants("value")
.Select(v => v.Value)
);

如果您真的关心性能,您可以使用 XmlReader直接通读<value>标记并附加到 StringBuilder .
但是,这不值得,除非您的 XML 有数百兆字节。

关于c# - 从写入字符串的 xml 文件中删除标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196828/

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