簡體   English   中英

在C#中用Xmldocument修改xml

[英]Modify xml with Xmldocument in C#

我正在嘗試按照此處另一篇文章中的說明編輯 883812976388 文檔的值How to modify existing XML file with XmlDocument and XmlNode in C#

這是我的代碼

XmlDocument xml = new XmlDocument();
        xml = xml.Load(@"https://www.aade.gr/sites/default/files/2020-09/SampleXML_1.1%20%20%28%CE%A4%CE%99%CE%9C-%CE%A0%CE%A9%CE%9B%CE%97%CE%A3%CE%97%CE%A3_%CE%91%CE%A5%CE%A4%CE%9F%CE%A4%CE%99%CE%9C%29%20.xml");

        XmlNodeList aNodes = xml.SelectNodes("/InvoicesDoc/invoice/issuer/vatNumber");


        foreach (XmlNode aNode in aNodes)
        {
            XmlAttribute vatAttribute = aNode.Attributes["vatNumber"];
            vatAttribute.Value = "123456789";
            
        }

        xml.Save(@"C:\Users\Kostas\Desktop\mydata\infinal.xml");

我的問題是XmlNodeList aNodes將返回空; 我試圖將xml.SelectNodes("/InvoicesDoc/invoice/issuer/vatNumber")更改為xml.SelectNodes("/InvoicesDoc/invoice/issuer")一直到單個xml.SelectNodes("/InvoicesDoc" )XmlNodeList aNodes仍將返回空。 第一次嘗試我從文件中加載了 XML 文檔並遇到了問題。 然后我想文件可能有問題所以直接從網站更改了文件的加載提供了我需要處理的這個 xml 模板。 這兩個選項都可以很好地加載文件,正如我在保存時看到的那樣,但是我的更改不會完成,因為aNodes是空的並且foreach循環將立即跳過。

我究竟做錯了什么?

提前感謝您的幫助。

ps 這是 xml 我需要編輯https://www.aade.gr/sites/default/files/2020-09/SampleXML_1.1%20%20%28%CE%A4%CE%99%CE%9C -%CE%A0%CE%A9%CE%9B%CE%97%CE%A3%CE%97%CE%A3_%CE%91%CE%A5%CE%A4%CE%9F%CE%A4% CE%99%CE%9C%29%20.xml

更新:我剛剛嘗試使用在https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms762271(v=vs.85)上的微軟示例中找到的另一個 xlm,XmlNodelist 也將返回 null當我尋找 /catalog/book 時 /empty。 所以好的一面是我需要編輯的原始 xml 文件沒有問題,壞的一面是我仍然無法弄清楚我做錯了什么。

XmlNodeList aNodes返回 null,因為 xml 包含以下命名空間聲明:

<InvoicesDoc xmlns=\"http://www.aade.gr/myDATA/invoice/v1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
xsi:schemaLocation=\"http://www.aade.gr/myDATA/invoice/v1.0/InvoicesDoc-v0.6.xsd\" 
xmlns:icls=\"https://www.aade.gr/myDATA/incomeClassificaton/v1.0\" 
xmlns:ecls=\"https://www.aade.gr/myDATA/expensesClassificaton/v1.0\">

你需要管理你的 xml 做這樣的事情:

XmlDocument xml = new XmlDocument();
xml.Load(@"https://www.aade.gr/sites/default/files/2020-09/SampleXML_1.1%20%20%28%CE%A4%CE%99%CE%9C-%CE%A0%CE%A9%CE%9B%CE%97%CE%A3%CE%97%CE%A3_%CE%91%CE%A5%CE%A4%CE%9F%CE%A4%CE%99%CE%9C%29%20.xml");

XmlNamespaceManager manager = new XmlNamespaceManager(xml.NameTable);
            manager.AddNamespace("InvoicesDoc", "http://www.aade.gr/myDATA/invoice/v1.0");

//Example to get the root element
XmlNodeList root = xml.SelectNodes("/InvoicesDoc:InvoicesDoc", manager);

//Example to get the VatNumber tag
XmlNodeList aNodes =xml.SelectNodes("/InvoicesDoc:InvoicesDoc/InvoicesDoc:invoice/InvoicesDoc:issuer/InvoicesDoc:vatNumber", manager);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM