PDA

View Full Version : سوال: تغيير يك node در فايل XML



amin_alexi
سه شنبه 10 آذر 1388, 11:57 صبح
سلام
من يك فايل Xml دارم كه محتواش تقريبا به اين صورته

<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.1" productVersion="12.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\ali\Desktop\Temp\BB. xsn" name="urn:schemas-microsoft-com:office:infopath:BB:-myXSD-2009-12-01T07-46-17" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?><my:myFields xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-12-01T07:46:17" xml:lang="fa">
<my:field1>11</my:field1>
<my:field2>22</my:field2>
</my:myFields>من مي خوام يك مقدار رو توش عوض كنم البته اين قدار هميشه يك مقدار ثابت نيست

C:\Documents%20and%20Settings\ali\Desktop\Temp\BB. xsnمي خوام مسيري كه در بالا نوشتم رو تو اين فايل XML عوض كنم
در حقيقت مي خوام مقدارnode ي كه اسمش href هست رو عوض كنم
حالا سوالم اينه كه چه طور مي تونم به يك node دسترسي داشته باشم و اون رو تغيير بدم
البته فكر كنم اين Href در Header فايل XML باشه !!!
ممنون از توجه دوستان !

Amir Oveisi
سه شنبه 10 آذر 1388, 12:48 عصر
using System.Xml.Linq;

XDocument xDoc = XDocument.Load("your xml file path");
XDoc.Element(XName.Get("?mso-infoPathSolution")).ReplaceAttribiute(XName.Get("href"),"YOUR NEW VALUE");
XDoc.Save("your xml file path");

amin_alexi
سه شنبه 10 آذر 1388, 13:50 عصر
ممنون دوست عزيز
من از Source شما استفاده كردم
ولي اول Error داد

The '?' character, hexadecimal value 0x3F, cannot be included in a name.
بعد هم كه "؟" رو برداشتم اين Error رو ميده !؟

Object reference not set to an instance of an object.
ممنون مي شم اگه راهنمايي كنين

mehdi.mousavi
سه شنبه 10 آذر 1388, 14:34 عصر
سلام من يك فايل Xml دارم كه محتواش تقريبا به اين صورته
در حقيقت مي خوام مقدارnode ي كه اسمش href هست رو عوض كنم
حالا سوالم اينه كه چه طور مي تونم به يك node دسترسي داشته باشم و اون رو تغيير بدم
البته فكر كنم اين Href در Header فايل XML باشه !!! ممنون از توجه دوستان !

سلام.
از ProcessingInstruction استفاده کنید:


XmlDocument doc = new XmlDocument();
doc.Load("temp.xml");

string newXsnFilePath = "c:\\newFile.xsn";

XmlProcessingInstruction pi = (XmlProcessingInstruction)doc.SelectSingleNode("/processing-instruction(\"mso-infoPathSolution\")");
pi.Value = string.Format("solutionVersion=\"1.0.0.1\" productVersion=\"12.0.0\" PIVersion=\"1.0.0.0\" href=\"file:///{0}.xsn\" name=\"urn:schemas-microsoft-com:office:infopath:BB:-myXSD-2009-12-01T07-46-17", newXsnFilePath);

doc.Save("new.xml");