2016-10-11 3 views
0

Ich habe die folgende einfache XML-Datei:Select() -Aufruf auf XMLDocument Rückkehr nichts

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
This file is used by the publish/package process of your Web project. You can customize the behavior of this process 
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>FileSystem</WebPublishMethod> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish /> 
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <publishUrl>E:\PublishTest</publishUrl> 
    <DeleteExistingFiles>True</DeleteExistingFiles> 
    </PropertyGroup> 
</Project> 

und ich versuche, den Wert eines der Elemente zu ändern, indem Sie folgendermaßen vorgehen:

XmlDocument xDoc = new XmlDocument(); 
xDoc.Load(fullPathToPortalPublishSettings); 

// Change the publish url to be the one we want 
var a = xDoc.SelectNodes("/Project/PropertyGroup"); 

Aber es bombardiert immer. Ich habe die Kommentare an der Spitze der XML-Datei entfernt, ich habe nur /Project versucht, nur Project, und ich kann einfach nicht zu verstehen scheinen, was schief läuft. Ich habe mir andere Beiträge angesehen, aber sehe nicht, was mit mir los ist. Irgendeine Idee? Vielen Dank!

+0

verlieren Sie den abschließenden Schrägstrich, um es '/ Project/PropertyGroup' zu machen oder wählen Sie tatsächlich die Kinder:'/Project/PropertyGroup/* ' – Kris

+0

Sorry, ich hätte erwähnt ich versuchte" xDoc.SelectNodes ("/ Project") als Nun, und selbst das zieht nichts zurück – skaz

+0

hast du xDoc in einer Uhr überprüft? enthält es, was du erwartest? – Kris

Antwort

2

Sie fragen ein Dokument ab, das einen Namespace enthält, so dass Sie dies auch in Ihrem Code berücksichtigen müssen. Verwenden Sie einen Namenstabelle, registrieren Sie den Msbuild-Namespace unter einem Namespace und verwenden Sie das wie folgt:

oder ähnlich.