이 코드가 뭐가 잘못 됐는지를 알 수없는 것 같습니다 ... 어떤 생각이 잘못된 것입니다. select는 모든 null 속성과 함께 하나의 항목을 반환합니다. 즉 foreach 루프가 한 번 입력되고 WMServer 서버. [pick 특성]이 null로 설정됩니다.Linq에서 값을 제공하지 않는 코드
var xdoc = XDocument.Load(@"pathtoxmlfile.xml");
var wms = from e2 in xdoc.Elements("GISImportConfig").Elements("BaseMapLayers")
select new
{
Url = (string)e2.Attribute("url"),
Enabled = (string)e2.Attribute("enabled"),
UserName = (string)e2.Attribute("username"),
Pasword = (string)e2.Attribute("password"),
Layers = e2.Elements("WMLayer")
};
foreach (var Config in wms)
{
WMServer server = new WMServer();
server.ServerURL = Config.Url;
server.Enabled = Convert.ToBoolean(Config.Enabled);
server.UserName = Config.UserName;
server.Password = Config.Pasword;
foreach (var layers in Config.Layers)
{
WMLayer layer = new WMLayer();
layer.Group = (string)layers.Attribute("group");
layer.Enabled = Convert.ToBoolean(layers.Attribute("enabled"));
layer.Name = (string)layers.Attribute("name");
}
}
XML : 당신은 하나의 <BaseMapLayers>
요소를 가지고 있기 때문에
<?xml version="1.0" encoding="utf-8" ?>
<GISImportConfig OracleServer="*" OracleInstance="*" OracleSchema="*">
<BaseMapLayers>
<WMServer url="https://example" enabled="true" username="someuser" password="somepass">
<WMLayer name="0" enabled ="true" group="test"></WMLayer>
<WMLayer name="1" enabled ="true" group="test"></WMLayer>
</WMServer>
<WMServer url="server2" enabled="false" username="" password="">
<WMLayer name="test2" enabled ="true" group="test"></WMLayer>
</WMServer>
</BaseMapLayers>
</GISImportConfig>
'선택 '은 원본 소스의 요소 개수를 변경할 수 없다는 것을 의미합니다 ... –
'xml'에 여분의' '이 있다고 생각합니다. 문제와 관련 있음). – Chris
감사합니다. 소스 xml 파일에 없습니다. 나는 그 질문을 편집했다. – will