0

我想修剪一个超过 1 个字符的字符串。字符串:

<incident_response>
<msg_id>50889_360</msg_id>
<inquiry_id>INC000000087930</inquiry_id>
<response_dt>02.26.2013 14:49:12</response_dt>
<status>0</status>
<error></error>
</incident_response>

是的,我知道,它是一个 XML 文件。

string responseXML;
string inc_number = 
responseXML.Trim().Trim('<inquiry_id>').TrimEnd('</inquiry_id>');

我收到一个 CS1012 错误,因为它们不止一个字符。我需要没有任何其他字符的整个inquiry_id (INC000000087930) 。是否有其他选择来获取号码?我不能使用 xmlready 或类似的东西,因为我从 API 模块获取 XML 作为字符串。

4

5 回答 5

10

将 XML 作为字符串并不妨碍您使用任何 XML API。最容易使用的是 Xlinq API。它也应该在 .NET 3.5 中可用。

XDocument doc = XDocument.Parse(xml);
string inquiryId = (string)doc.Root.Element("inquiry_id");
于 2013-02-26T16:02:33.873 回答
0

如果您只想要查询 _id,您可以使用正则表达式。

string your_xml = @"<incident_response>
<msg_id>50889_360</msg_id>
<inquiry_id>INC000000087930</inquiry_id>
<response_dt>02.26.2013 14:49:12</response_dt>
<status>0</status>
<error></error>
</incident_response>";


Regex re = new Regex(@"<inquiry_id>(?'inquiry_id'.*?)</inquiry_id>");
MatchCollection mc = re.Matches(your_xml);
foreach (Match m in mc)
{
    MessageBox.Show(m.Groups["inquiry_id"].Value);
}
于 2013-02-26T16:08:47.970 回答
0

如果您仍然想使用这样的字符串可能会起作用

 responseXML.Substring(responseXML.IndexOf("<inquiry_id>"), responseXML.IndexOf("</inquiry_id>"))

但在您的情况下使用 XML API 是一种更简洁的方法。

于 2013-02-26T16:06:52.533 回答
-1

尝试这个:

string str = "ggAAAff";
string prefix = "gg";
string suffix = "ff";
if (str.EndsWith(suffix)) str = str.Substring(0, str.Length - suffix.Length);
if (str.StartsWith(prefix)) str = str.Substring(prefix.Length);
于 2013-02-26T16:10:25.307 回答
-1

C# 支持 stringVariable.Replace(string, string),它将用第二个字符串替换所有出现的第一个字符串。

string responseXML;
string inc_number = 
    responseXML.Replace("<inquiry_id>", string.Empty).Replace("</inquiry_id>", string.Empty);

但是您仍然需要处理 XML 的其余部分。我认为 XML 解析器更适合您的需求。

于 2013-02-26T16:07:03.937 回答