我无法访问子节点值。下面是XML结构和创建新联系人的代码。
<Order xmlns="http://example.com">
<MiscContact>
<MiscContact>
<ContactType>MailingContact</ContactType>
<Contact>
<Name>
<First>JIM</First>
<Last>RON</Last>
<FullName>RON JIM</FullName>
</Name>
<IsValid>false</IsValid>
</Contact>
</MiscContact>
</MiscContact>
<ExportForm>
<Contact>
<Name>
<First>JIM</First>
<Last>RON</Last>
<FullName>RON JIM</FullName>
</Name>
<IsValid>false</IsValid>
</Contact>
</ExportForm>
</Order>
仅为<MiscContact>
创建新联系人的代码:
XNamespace Namespace = "http://online.us.com";
var MiscContact = from mc in xmlDoc.Descendants(Namespace + "Contact")
where mc.Parent.Name.Equals("MiscContact")
select new Contact
{ Name = ob.Element(Namespace + "Name").Value }
我遇到的问题是,即使我有where子句只选择其父级为MiscContact的联系人,但<MiscContact>
和<ExportForm>
的联系人部分都已加载。
知道如何解决此问题吗?
答案 0 :(得分:1)
您的代码似乎与where
子句一起正常工作,并从Name
中提取MiscContact -> Contact -> Name
元素。我认为你的问题是你最后使用的是.Value
,它将所有这些值连接在一起:
<Name>
<First>JIM</First>
<Last>RON</Last>
<FullName>RON JIM</FullName>
</Name>
结果是“JIMRONRON JIM”。如果您需要"FullName"
,那么您应该使用:
mc.Element(Namespace + "Name")
.Element(Namespace + "FullName").Value
根据需要将"FullName"
替换为"First"
或"Last"
。