עבור לתוכן

עריכה/עדכון XML בעזרת C#

Featured Replies

פורסם

שלום לכולם,

אני לא כל כך מכיר C# וגם לא XML אז סלחו לי על המונחים.

אני מנסה לכתוב תוכנית שמוצאת node ומעדכנת ערך של element.

חיפשתי דוגמאות ברשת ומצאתי בסוף משהו מובנה של C#, זה עובד אבל יש תופעת לוואי, הוא מוסיף בנוסף את גרסת XML בראש הקובץ.

איך אני מונע זאת? אני רק רוצה לעדכן את הערך וזהו, לא מקובל שינוי אחר בקובץ...

קטעי קוד רלוונטיים:

//Load xml & Find root element
XDocument xdoc = XDocument.Load(myfile.xml);
var element = xdoc.Element("Section").Element("Element1");

//Update
element.Element("Path").Value = "newPath";

//Save
xdoc.Save(myfile.xml);

השורה שהוא מוסיף (שאני רוצה למנוע) היא משהו כזה:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

פורסם
  • מחבר

טעות שלי, לא שמתי לב שזה הפורום הלא נכון... (כדאי להעביר)

תודה על הקישור, אני אנסה את זה!

פורסם
  • מחבר

הקישור לא עוזר לבעיה שלי.

xmlwriter יוצר אלמנטים חדשים ודורס את הקובץ לחלוטין... לא מצליח לפתוח לעריכה בלבד.

השאלה איך אני פותח את הקובץ, משנה את הערך my string ושומר את הקובץ... אפשר קטע קוד מוכן לזה? (חיפשתי כבר הרבה ולא מוצא משהו מועיל).

הקובץ שלי בנוי פחות או יותר ככה:

<object>
<item>
<string>my string</string>
</item>
</object>

כמובן בלי התוספת הזו:

<?xml version="1.0" encoding="UTF-8"?>

פורסם

אין כזה דבר "לערוך" קובץ xml. אתה יכול לפתוח את הקובץ, לטעון את התוכן שלו לזכרון, לשנות את התוכן בזכרון ואז לכתוב את כל התוכן בחזרה לקובץ (הדרך היחידה "לערוך" זה ע"י החלפה - ובשביל זה צריך שמה שאתה כותב יהיה זהה באורכו למה שאתה מוחק).

מה הקוד שלך? כנראה יש לך טעות איפשהו...

פורסם
  • מחבר

אין לי טעות (רק בדקתי התנהגות של xmlwriter על קובץ מוכן), אני לא יודע מה לכתוב כדי לקרוא את הקובץ לזיכרון עם xmlwriter...

לפי מה שמצאתי ברשת, צריך איכשהו להשתמש ב-xmlreader ואז להדביק (אם הבנתי נכון) את ה-node בעזרת xmlwriter.

זה מה שעובד בינתיים (רק שזה מוסיף את השורה של declaration):

//Load xml & Find root element
XDocument xdoc = XDocument.Load(file);
var element = xdoc.Element("object").Element("item");
element.Element("string").Value = env;

//save
xdoc.Save(file);

פורסם

התכוונתי שתעלה את הקוד שלא עובד לך (זה עם ה-xmlWriter).

פורסם
  • מחבר

מבחינת הקוד, הוא היה באמת זבל, אני ניסיתי לראות איך מתנהג ה-writer וחשבתי שאם אני אנסה ליצור node באותו שם, אז הוא ידרוס את הקיים, מתברר שהוא יצר לי קובץ חדש עם node אחד בלבד... אחרי זה גיליתי שזה ממש לא מספיק כי היה חסר לי עניין ה-xmlReader שלא ידעתי גם אותו לתפעל (אני ממש לא מנוסה בעבודה עם קבצים בתכנות באופן כללי).

פתרתי את הבעיה בצורה עקיפה (למרות שלא אלגנטית).

קראתי את הקובץ לתוך מערך של שורות (split), ושמרתי את המערך החל מהשורה השניה...

פורסם

לא הבנתי למה הסיבוך הזה. פשוט פתח קובץ חדש עם ה-XmlWriter וכתוב את כל ה-XDocument בחזרה באמצעותו.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים