gpt4 book ai didi

c# - 使用 < 和 > 解析 XML

转载 作者:数据小太阳 更新时间:2023-10-29 02:49:51 27 4
gpt4 key购买 nike

我试图剥离一些 XML 并仅获取与字段相关的值,但是 XML 不使用小于号和大于号。我尝试在字段名称周围加上子字符串(在下面的例子中是日期),这工作正常。

    &lt;my:Date xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2014-07-27T23:04:34"&gt;2014-08-15&lt;/my:Date&gt;

但是,我无法围绕小于和大于进行子字符串化。我的代码如下:

public string processReportXML(string field, string xml)
{
try
{
string result = xml.Substring(xml.IndexOf(field));
int resultIndex = result.LastIndexOf(field);
if (resultIndex != -1) result = result.Substring(0, resultIndex);

result = result.Substring(result.IndexOf("&gt;"));
resultIndex = result.IndexOf("&lt;");
if (resultIndex != -1) result = result.Substring(0, resultIndex);

return field + ": " + result.Substring(4) + "\n";
}
catch (Exception e)
{
return field + " failed\n";
}
}

我在一个测试项目中尝试过,它工作正常,但我总是得到索引在我的实际网络服务中应该大于 0。我也尝试过使用正则表达式替换字符,但这也没有用。

result = Regex.Replace(result, "&(?!(amp|apos|quot|lt|gt);)", "hidoesthiswork?");

最佳答案

您有 HTML 编码的数据。

将此添加到方法的开头以获得简单的解决方案:

xml = HttpUtility.HtmlDecode(xml);

如果您使用 .NET 4.0+,也可以使用 WebUtility.HtmlDecode,如 this answer

从长远来看,您确实应该使用 XML 解析器或类似 LINQ-XML 的工具来访问此数据。正则表达式不适用于此类结构化数据。

关于c# - 使用 < 和 > 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com