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)全体が必要です。番号を取得する別のオプションはありますか?APIモジュールから文字列としてXMLを取得するため、xmlreadyなどを使用できません。

4

5 に答える 5

10

XMLを文字列として使用しても、XMLAPIの使用を妨げることはありません。最も使いやすいのはXLinqAPIです。.NET3.5でも利用できるはずです。

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

それでも文字列を操作したい場合は、このようなものが機能する可能性があります

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

しかし、あなたのケースでXML APIを使用することは、よりクリーンなアプローチです。

于 2013-02-26T16:06:52.533 に答える
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 に答える
-1

C#はstringVariable.Replace(string、string)をサポートします。これにより、最初の文字列のすべての出現箇所が2番目の文字列に置き換えられます。

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

ただし、残りのXMLを処理する必要があります。XMLパーサーはあなたのニーズにより適していると思います。

于 2013-02-26T16:07:03.937 に答える
-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 に答える