我将XML加载到字符串param
,就像这样
<param>
<ClientID></ClientID>
<CarrierSCAC></CarrierSCAC>
<StatusCode></StatusCode>
<BatchNumber>20</BatchNumber>
<SQL>
ClientID<21
</SQL>
</param>
从这个字符串中我想切出ClientID<21
,我尝试过这样的事情
int start = param.IndexOf("<SQL>") + 1;
int end = param.IndexOf("</SQL>", start);
string result = param.Substring(start, end - start);
但它给了我另一个像这样的结果
SQL>ClientID<21
任何人都可以指出我做错了吗?
答案 0 :(得分:3)
对于您的问题,您的代码应为:
int start = param.IndexOf("<SQL>") + 5;
int end = param.IndexOf("</SQL>", start);
string result = param.Substring(start, end - start);
IndexOf
返回第一次出现的索引(在您的情况下将是<
字符
但是你也应该考虑用适当的模型阅读xml。所以你可以创建一个像这样的类(虽然不确定数据类型):
public class Wrapper
{
public Model Param;
}
public class Model
{
public string ClientID;
public string CarrierSCAC;
public string StatusCode;
public int BatchNumber;
public string SQL;
}
然后阅读输入:
var input = "<param>....</param>";
var serializer = new XmlSerializer(typeof(Wrapper));
using (TextReader reader = new StringReader(input))
{
result = serializer.Deserialize(reader);
var sql = result.Param.Sql; // this would be your string you are looking for
}
正如评论中的其他人已经说过:您必须确保XML有效! SQL字符串ClientID<21
不是有效字符串,因为它包含<
。