从.txt获取值

时间:2011-08-04 12:00:24

标签: c# c#-4.0

我有一个像这样的file.txt:

这只是.txt文件的一部分

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>GeoServer Configuration</title>
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
</head>
<body>

Workspaces
<ul>
<li>
<a href="http://xxxxxx:8080/geoserver/rest/workspaces/worldmap1.html">worldmap1</a>
</li>
<li>
<a href="http://xxxxxx:8080/geoserver/rest/workspaces/worldmap2.html">worldmap2</a>
</li>
</ul>
</body>
</html>

有可能获得价值吗?我试图将.txt传递给.xml文件但是我遇到了一些问题,因为它不是一个格式良好的xml。

提前致谢

3 个答案:

答案 0 :(得分:1)

首先你必须添加一个根元素。假设您创建了一个名为TextFile1.xml的XML文件 其中包含以下XML

<Item>
<li>
  <a href="http://10.80.14.188:8080/geoserver/rest/workspaces/worldmap1.html">worldmap1</a>
</li>
<li>
  <a href="http://10.80.14.188:8080/geoserver/rest/workspaces/worldmap2.html">worldmap2</a>
</li>
</Item>

enter image description here

您可以执行以下操作以获取href值

public static class MyClass
    {
        public static void Main()
        {
            var xmldoc = XDocument.Load(@"TextFile1.xml");
            XNamespace p = "http://www.w3.org/1999/xhtml";
            var result = from item in xmldoc.Descendants(p + "a")
                         select item;

            foreach (var item in result.ToList())
            {
                string href = item.Attribute("href").Value;
                var splitHref = href.Split('/');
                string page = splitHref[splitHref.Length - 1];
            }
        }
    }

答案 1 :(得分:0)

如果这是您唯一的输入,可以通过添加根节点将其更改为有效的xml文档:

<root>
  <li><a href="http://10.80.14.188:8080/geoserver/rest/workspaces/worldmap1.html">worldmap1</a></li>
  <li><a href="http://10.80.14.188:8080/geoserver/rest/workspaces/worldmap2.html">worldmap2</a></li>
</root>

(这对于一些简单的字符串连接很容易)

该文档现在是格式良好的XML,因此您可以使用Linq to XML或任何其他XML API来读取您需要的值。

答案 2 :(得分:0)

添加根节点似乎是解决方案,但如果您无法更改输入,则可以使用正则表达式。