您可以嘗試以下的XElement擴展方法:http://searisen.com/xmllib/extensions.wiki
這裏是它的權力的一個例子,因爲這個XML從另一篇文章:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<PatchCreation
Id="224C316C-5894-4771-BABF-21A3AC1F75FF"
CleanWorkingFolder="yes"
OutputPath="patch.pcp"
WholeFilesOnly="yes">
<PatchInformation
Description="Update Patch"
Comments="Update Patch"
ShortNames="no"
Languages="1033"
Compressed="yes"
Manufacturer="me"/>
<PatchMetadata
AllowRemoval="yes"
Description="Update Patch"
ManufacturerName="me"
TargetProductName="Update"
MoreInfoURL="http://andrewherrick.com/"
Classification="Update"
DisplayName="Update Patch"/>
<Family DiskId="5000"
MediaSrcProp="Sample"
Name="Update"
SequenceStart="5000">
<UpgradeImage SourceFile="c:\new.msi" Id="PatchUpgrade">
<TargetImage SourceFile="c:\old.msi" Order="2" Id="PatchUpgrade" IgnoreMissingFiles="no" />
</UpgradeImage>
</Family>
<PatchSequence PatchFamily="SamplePatchFamily"
Sequence="1.0.0.0"
Supersede="yes" />
</PatchCreation>
</Wix>
這臺UpgradeImage標籤的的SourceFile的價值UpgradeImage及其SourceFile中的屬性和TargetImage標記。
XElement wix = XElement.Load(xmlFile1.FullName);
wix.Set("PatchCreation/Family/UpgradeImage/SourceFile", "upgrade path", true)
.Set("TargetImage/SourceFile", "target path", true);
你也可以用同樣的方式獲得它們的值(沒有強制轉換)。
string upgradeSource = wix.Get("PatchCreation/Family/UpgradeImage/SourceFile", string.Empty);
string targetSource = wix.Get("PatchCreation/Family/UpgradeImage/TargetImage/SourceFile", string.Empty);
或者,這可以寫成:
XElement upgradeImage = wix.GetElement("PatchCreation/Family/UpgradeImage");
string upgradeSource = upgradeImage.Get("SourceFile", string.Empty);
string targetSource = upgradeImage.Get("TargetImage/SourceFile", string.Empty);
爲了得到一個整數列表:
<root>
<path>
<list>
<value>1</value>
<value>12</value>
<value>13</value>
<value>14</value>
<value>15</value>
</list>
</path>
</root>
使用GetEnumerable()方法:
List<int> list = root
.GetEnumerable("path/list/value", xvalue => xvalue.Get(null, int.MinValue));
.ToList();
要設置一個新的int列表:
var list2 = new int[] { 1, 3, 4, 5, 6, 7, 8, 9, 0 };
root.SetEnumerable("path/list", list2, a => new XElement("value", a));
導致這種新的XML:
<root>
<path>
<list>
<value>1</value>
<value>3</value>
<value>4</value>
<value>5</value>
<value>6</value>
<value>7</value>
<value>8</value>
<value>9</value>
<value>0</value>
</list>
</path>
</root>
我的第一個雖然是XmlSerialization,但在我的設計,我發現有很多limitarions(這將是因爲我用了很多接口,幾乎我的課沒有默認構造函數)..無論如何,我「M去考慮它作爲最後的解決方案:)我使用這個文件作爲數據庫,我的意思是,增加,更新,刪除.. – 2012-04-04 16:20:44