2013-05-01 2 views
1

Это как мой XPathNavigator выглядит следующим образом:чтения в атрибуте с помощью XPathNavigator

<mux:Column Name="id" DisplayMemberBinding="{Binding Path=Id, Mode=OneWay}" Width="100" DisplayName="Header_Id" Property="Id" DataType="s:String" xmlns:mux="http://schemas.microsoft.com/SystemCenter/Common/UI/Views/GridView" /> 

Я хочу, чтобы прочитать значение Path в атрибуте DisplayMemberBinding.

Это то, что я пробовал:

xPathNavigator.GetAttribute("DisplayMemberBinding", "") //Gives me {Binding Path=Id, Mode=OneWay} 

xPathNavigator.GetAttribute("DisplayMemberBinding/Binding/@Path", "") //Gives me empty string 

Как я добраться до значения Путь в DisplayMemberBinding приписывать?

ответ

1

Использование:

xPathNavigator.Evaluate 
    (@"substring-before(substring-after(@DisplayMemberBinding, 'Path='), 
        ',')" 
); 

Конечно, вы должны привести результат к string.

проверка XSLT на основе:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:mux="http://schemas.microsoft.com/SystemCenter/Common/UI/Views/GridView"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="/*"> 
    <xsl:value-of select= 
    "substring-before(substring-after(@DisplayMemberBinding, 'Path='), 
        ',')"/> 
</xsl:template> 
</xsl:stylesheet> 

Когда это преобразование применяется на прилагаемом документе XML:

<mux:Column Name="id" 
DisplayMemberBinding="{Binding Path=Id, Mode=OneWay}" 
Width="100" DisplayName="Header_Id" 
Property="Id" DataType="s:String" 
xmlns:mux="http://schemas.microsoft.com/SystemCenter/Common/UI/Views/GridView" /> 

выражение XPath вычисляется и результат этой оценки копируется на выход:

Id