如何使用 C# 从标签 xml 中提取属性?

how to extract attribute from tag xml with c#?

<channel>
        <title>test + test</title>
        <link>http://testprog.test.net/api/test</link>
        <description>test.com</description>
        <category>test + test</category>

        <item xml:base="http://test.com/test.html?id=25>
            <guid isPermaLink="false">25</guid>
            <link>http://test.com/link.html</link>
            <title>title test</title>
            <description>Description test description test</description>
            <a10:updated>2015-05-26T10:23:53Z</a10:updated>
            <enclosure type="" url="http://test.com/test/test.jpg" width="200" height="200"/>
        </item>
    </channel>

我像这样提取了这个标签(标题测试):

title = ds.Tables["item"].Rows[0]["title"] as string;

如何使用 c# 从 <encosure> 标签中提取 url 属性?

感谢

第一个选项

您可以创建 类 以将 XML 映射和反序列化为对象并作为属性轻松访问。

第二个选项

如果您只对少数几个值感兴趣并且不想创建映射 类 ,您可以使用 XPath,您可以轻松找到许多文章和问题的答案。

要从标记中提取 url 属性,您可以使用路径:

"/channel/item/enclosure/param[@name='url']/@value"

有很多文章可以帮助您阅读 XML,但简单的答案是将您的 XML 加载到 XML 文档中,然后简单地调用

doc.GetElementsByTagName("enclosure")

这将 return 一个包含在您的文档中找到的所有 'enclosure' 标记的 XmlNodeList。我真的建议您阅读一些有关使用 XML 的内容,以确保您的应用程序功能强大且健壮。

您可以使用 LinqToXML,这对您更有用...

请参考代码

string xml = @"<channel>
            <title>test + test</title>
            <link>http://testprog.test.net/api/test</link>
            <description>test.com</description>
            <category>test + test</category>

            <item xml:base=""http://test.com/test.html?id=25"">
                <guid isPermaLink=""false"">25</guid>
                <link>http://test.com/link.html</link>
                <title>title test</title>
                <description>Description test description test</description>
                <a10>2015-05-26T10:23:53Z</a10>
                <enclosure type="""" url=""http://anupshah.com/test/test.jpg"" width=""200"" height=""200""/>
            </item>
        </channel>";

        var str = XElement.Parse(xml);


        var result = (from myConfig in str.Elements("item")
                     select myConfig.Elements("enclosure").Attributes("url").SingleOrDefault())
                     .First();

        Console.WriteLine(result.ToString());

希望对你有所帮助...