【问题标题】:Accessing child node value with parent reference with LINQ to XML使用 LINQ to XML 访问具有父引用的子节点值
【发布时间】:2011-05-19 11:04:07
【问题描述】:

我无法访问子节点值。下面是 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>

仅为&lt;MiscContact&gt; 创建新联系人的代码:

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 的联系人,但来自 &lt;MiscContact&gt;&lt;ExportForm&gt; 的联系人部分正在加载。

知道如何解决这个问题吗?

【问题讨论】:

    标签: c# .net xml linq linq-to-xml


    【解决方案1】:

    您的代码似乎可以与where 子句一起正常工作,并从MiscContact -&gt; Contact -&gt; Name 中提取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"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多