原文本:
"<img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-0bbb1d4b322747feb1a7e59f7b7c4714-00.jpg' width='100%' /><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-ccdcac9578a04805bf4c333a48acc0e6-01.jpg' width='100%' /><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-3abfe5a6dfdd44648f9c4292376d00eb-02.jpg' width='100%' />"
需要变成一个字符串数组
如下:
[
<img src="http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/7c6e48f502124fd6b961a3479310552e-23873d70b9b24eb3ad58e4f5f7368fee-00.jpg" width="100%">,
<img src="http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/7c6e48f502124fd6b961a3479310552e-f1ef963e0df14b01bc7df0782eaaeb0c-01.jpg" width="100%">,
<img src="http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/7c6e48f502124fd6b961a3479310552e-d2c60b9b8e36469b964c35145f301cd2-05.jpg" width="100%">
]
求大神给点建议
首位加[
末位加]
> 替换为 >,
去除最后的 ,
using System; using System.Linq; using System.Xml.Linq; namespace ConsoleApp { class Program { static void Main(string[] args) { var tmp = "<array><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-0bbb1d4b322747feb1a7e59f7b7c4714-00.jpg' width='100%' /><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-ccdcac9578a04805bf4c333a48acc0e6-01.jpg' width='100%' /><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-3abfe5a6dfdd44648f9c4292376d00eb-02.jpg' width='100%' /></array>"; var element = XElement.Parse(tmp); var array = element.Elements().Select(el => el.ToString()).ToArray(); Console.ReadKey(); } } }
大神, 你没有考虑 我这个img标签没有闭合。没有写像这样的闭合 <img xxxxx> </img>,不是这样的形式,那么在编程子元素的时候,回抛异常的。
@奇妙能力:
不需要这样的形式, <img />这样也是正常的xml格式。
之所以异常是因为xml必须要有根节点。
你看我上面的代码,tmp字符串前后加了<array>。
@写代码的小2B:
大神你看:
我修改之后的写法如下:
var t = XElement.Parse(string.Format("<array>{0}</array>", htmlStr));
var result = t.Elements();
var aary = result.Select(e => e.ToString()).ToArray();
执行后还是有异常:第 1 行,位置 854 上的开始标记“img”与结束标记“array”不匹配。 第 1 行,位置 1024。
@写代码的小2B: htmlStr就是上面问题中的那个文本
@奇妙能力:
大兄弟,那就是这个htmStr有问题。
我给的示例代码tmp使用的是你问题里面的字符串,没有改过。
确保htmlStr和你问题里面给的字符串一样。
@奇妙能力:
那你可以执行我给的示例代码试试,然后确定问题在哪。
static void Main(string[] args) { List<string> strList = new List<string>(); Regex regx = new Regex("<img[^<>]*/>"); MatchCollection col= regx.Matches("<img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-0bbb1d4b322747feb1a7e59f7b7c4714-00.jpg' width='100%' /><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-ccdcac9578a04805bf4c333a48acc0e6-01.jpg' width='100%' /><img src='http://192.168.0.220:8899/a12dd147-6048-43e3-806d-2b347fe58cb5/C/201703/2e8a04f472a14b55a5ba6310b38cea63-3abfe5a6dfdd44648f9c4292376d00eb-02.jpg' width='100%' />"); foreach (Match item in col) { strList.Add(item.Value); } Console.WriteLine("end----------------------------------------"); Console.ReadKey(); }
结果