簡體   English   中英

根據以XML結尾的文本值獲取XML節點

[英]Getting XML node based on text value, that ends with XML

我有這個xml文件,在這里我想閱讀documenturl,其中innertext以.xml結尾

<Root>
  <hits>
    <total>4</total>
    <max_score />
    <hits>
      <_index>offentliggoerelser-prod-20161006</_index>
      <_type>offentliggoerelse</_type>
      <_id>urn:ofk:oid:23640715</_id>
      <_score />
      <_source>
        <dokumenter>
          <dokumentUrl>url.pdf</dokumentUrl>
          <dokumentMimeType>application/pdf</dokumentMimeType>
          <dokumentType>KONCERNREGNSKAB_FOR_OVERLIGGENDE_MODER</dokumentType>
        </dokumenter>
        <dokumenter>
          <dokumentUrl>url.xml</dokumentUrl>
          <dokumentMimeType>application/xml</dokumentMimeType>
          <dokumentType>AARSRAPPORT</dokumentType>
        </dokumenter>
        <dokumenter>
          <dokumentUrl>url.pdf</dokumentUrl>
          <dokumentMimeType>application/pdf</dokumentMimeType>
          <dokumentType>AARSRAPPORT</dokumentType>
        </dokumenter>
      </_source>
      <sort>1490355849989</sort>
    </hits>
  </hits>
</Root>

我正在嘗試閱讀以'.xml'結尾的dokumentUrl
我嘗試使用LINQ

XDocument mydoc = XDocument.Load(file);    
XDocument xPlatformXml = new XDocument(mydoc);
XElement xel = xPlatformXml.Element("_source")
                           .Elements("dokumenter")
                           .Where(x => x.Element("dokumentUrl").Value == ".xml")
                           .SingleOrDefault();

但這行不通,有人可以幫我嗎

您可以檢查是否有descendants node ,其值以.xml結尾

XDocument mydoc = XDocument.Load(file);
XDocument xPlatformXml = new XDocument(mydoc);
XElement xel = xPlatformXml.Root.Descendants()
                                    .Where(x => x.Name == "dokumentUrl" && x.Value.EndsWith(".xml"))
                                    .SingleOrDefault();

嘗試這個:

XDocument xPlatformXml = new XDocument(mydoc);
XElement xel = xPlatformXml.Element("_source")
                           .Elements("dokumenter")
                           .Where(x => x.Element("dokumentUrl").Value.EndsWith(".xml"))
                           .SingleOrDefault();

使用Element方法時,必須指定從文檔根目錄到所需節點的完整路徑。 例如:

var xel = xPlatformXml.Element("Root")
    .Element("hits")
    .Element("hits")
    .Element("_source")
    .Elements("dokumenter")
    .Elements("dokumentUrl")
    .SingleOrDefault(x => x.Value.EndsWith(".xml"));

或者,您可以使用Descendants方法。 它更簡潔,但可能會影響性能。

var xel2 = xPlatformXml.Descendants("dokumentUrl")
    .SingleOrDefault(x => x.Value.EndsWith(".xml"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM