gpt4 book ai didi

xml - 由于 xml 命名空间导致的 LINQ to XML 问题

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

我正在尝试使用 Linq 从 XML 中进行选择。这是 XML 的示例:

<?xml version="1.0" encoding="UTF-8"?>
<listingexport xmlns="http://websitexmlfeed.com/webservice/2/listings"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websitexmlfeed.com/webservice/2/listings ../listings.xsd">
<listing>
<id>00001</id>
<name>Modelname</name>
<type>Typename</type>
</listing>
</listingexport>

我使用的代码如下:

XDocument le = XDocument.Load(@uri);
var listings = (from listing in le.Descendants("listing")
select new listingType
{
Id = listing.Element("id").Value,
Name= listing.Element("name").Value,
Type= listing.Element("type").Value
}).ToList();

我遇到的问题是,由于命名空间信息,le.Descendants("listing") 调用不会从 XML 文件返回任何结果(我想这个问题与这篇文章相关:ASP.NET 2.0 XmlDataSource's XPath doesn't support namespaces)。但是,如果我修改 XML 文件,那么就没有命名空间信息:

<?xml version="1.0" encoding="UTF-8"?>
<listingexport>
<listing>
<id>00001</id>
<name>Modelname</name>
<type>Typename</type>
</listing>
</listingexport>

它有效。不幸的是,我无权修改 xml 文件,因此需要一个可行的解决方案。任何帮助表示赞赏。

谢谢你乔

最佳答案

包含

XNamespace ns  = "http://websitexmlfeed.com/webservice/2/listings";

然后尝试

var listings = (from listing in le.Descendants(ns + "listing")
select new
{
Id = listing.Element(ns + "id").Value,
Name= listing.Element(ns + "name").Value,
Type= listing.Element(ns + "type").Value
}).ToList();

关于xml - 由于 xml 命名空间导致的 LINQ to XML 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591237/

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