【问题标题】:Count how many times there is a specific text in a string and get the values in a array [duplicate]计算字符串中有多少次特定文本并获取数组中的值[重复]
【发布时间】:2022-03-03 00:24:29
【问题描述】:

我有这个 XML 文件,但我在反序列化它时遇到了麻烦,所以我打算绕过它。我有一个 XML 字符串,我想从中获取一个值。假设这是我的 XML 字符串:

string XMLstring = "<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<InputText>123</InputText>
<InputText>Apple</InputText>
<InputText>John</InputText>
</note>";

现在,我尝试了检查 XMLstring 是否包含 InputText 之类的方法,但我想以某种方式从那里获取所有三个值,然后在某处使用它们。有什么方法可以做到这一点而不必反序列化它?

【问题讨论】:

  • “无需反序列化”我不明白这怎么可能。如果你想找到你感兴趣的元素,并获得所述元素的内容,你需要解析XML。
  • 如果没有看到您的原始代码,我们将不知道如何对您现有的代码库进行更改。请发minimal reproducible example,并详细说明需要修改的地方。
  • 这能回答你的问题吗? Read a XML (from a string) and get some fields - Problems reading XML。你是怎么读这个文件的,如果你是,我只看到一个硬编码的字符串?
  • 您可以做的另一件事是将您的 XML 字符串转换为 JSON,然后继续。
  • @Fildor 可能需要仔细检查该链接

标签: c# xml serialization


【解决方案1】:

您可以使用 LINQ-to-XML 解析字符串并获取值。

using System.Linq;
using System.Xml.Linq;

public static void Main()
{
    var xml = @"<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body><InputText>123</InputText><InputText>Apple</InputText><InputText>John</InputText></note>";
        
    var list = XDocument.Parse(xml).Descendants("InputText").Select( x => x.Value );
    foreach (var item in list) Console.WriteLine(item);
}

输出:

123
Apple
John

Fiddle

【讨论】:

  • 原来我有一个损坏的 XML 字符串,奇怪的符号和东西......非常感谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 2020-06-14
  • 2021-02-15
  • 2012-08-11
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
相关资源
最近更新 更多