我想修剪一个超过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作为字符串。
答案 0 :(得分:10)
将XML作为字符串不会阻止您使用任何XML API。最容易使用的是XLinq API。它也应该在.NET 3.5中提供。
XDocument doc = XDocument.Parse(xml);
string inquiryId = (string)doc.Root.Element("inquiry_id");
答案 1 :(得分:0)
如果你仍然想要使用字符串这样的东西可能会起作用
responseXML.Substring(responseXML.IndexOf("<inquiry_id>"), responseXML.IndexOf("</inquiry_id>"))
但在您的案例中使用XML API是一种更简洁的方法。
答案 2 :(得分: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);
}
答案 3 :(得分:-1)
C#支持stringVariable.Replace(string,string),它将用第二个字符串替换所有第一个字符串。
string responseXML;
string inc_number =
responseXML.Replace("<inquiry_id>", string.Empty).Replace("</inquiry_id>", string.Empty);
但是你仍然需要处理其余的XML。我认为XML解析器更适合您的需求。
答案 4 :(得分:-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);