XElement возвращает значение узла - PullRequest
1 голос
/ 19 марта 2011

У меня есть XElement, который выглядит так:

    <VideoFiles>
  <VideoFileInfo>
    <VideoType>1000</VideoType> 
    <FormatCode>1000</FormatCode> 
    <Url>http://www.idontwantthisvalue.com</Url> 
  </VideoFileInfo>
  <VideoFileInfo>
    <VideoType>WMVOriginal</VideoType> 
    <FormatCode>1004</FormatCode> 
    <Url>http://www.iwanthitsvalue.com</Url> 
  </VideoFile>

Мне нужно взять значение, в котором есть брат или сестра, со значением 1004.

Может кто-нибудь помочь с этим?

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Чистое решение LINQ to XML:

    XElement xdoc = XElement.Load("test.xml");
    var myUrl = xdoc.Descendants("VideoFileInfo")
                    .Where(x => x.Element("FormatCode").Value == "1004")
                    .Select(x => x.Element("Url").Value)
                    .FirstOrDefault();
1 голос
/ 19 марта 2011

Обычно:

/VideoFiles/VideoFileInfo[FormatCode='1004']/Url

Точно

Мне нужно взять значение, которое имеет родной брат со значением 1004.

/VideoFiles/VideoFileInfo/*[.='1004']/following-sibling::*[1]

или

//*[.='1004']/following-sibling::*[1]
0 голосов
/ 19 марта 2011

Следующий XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:value-of select="VideoFiles/VideoFileInfo[FormatCode='1004']/Url"/>
    </xsl:template>
</xsl:stylesheet>

Выводит только желаемое значение:

http://www.iwanthitsvalue.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...