【发布时间】:2021-11-28 22:27:24
【问题描述】:
我正在尝试按照此处 How to modify existing XML file with XmlDocument and XmlNode in C# 的另一篇文章中的说明编辑 xml 文档的值。
这是我的代码
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 循环将立即跳过。
我做错了什么?
提前感谢您的帮助。
更新:我刚刚尝试使用另一个 xlm 在 microsoft 示例中找到,名为 books on https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms762271(v=vs.85) 当我查找 /catalog/book 时,XmlNodelist 也将返回 null/empty。所以好的一面是我需要编辑的原始 xml 文件没有问题,坏的一面是我仍然无法弄清楚我做错了什么。
【问题讨论】:
-
你试过aNode.Attributes[“vatNumber”].Value = “123456789”;
-
foreach 循环将立即跳过并且不会继续执行其代码,因为 aNodes 为空。这是我的问题。 **XmlAttribute vatAttribute=aNode.Attributes["vatNumber"]; vatAttribute.Value = "123456789"; ** 根本不会执行,因为 foreach 循环在第一次迭代中跳过,因为 aNodes 是空的,没有什么可以迭代。
-
你能不能只在这个问题中以正确的格式添加xml
-
<InvoicesDoc xmlns="http://www.aade.gr/myDATA/invoice/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:icls="https://www.aade.gr/myDATA/incomeClassificaton/v1.0" xmlns:ecls="https://www.aade.gr/myDATA/expensesClassificaton/v1.0" xsi:schemaLocation="http://www.aade.gr/myDATA/invoice/v1.0/InvoicesDoc-v0.6.xsd"> <invoice> <issuer> <vatNumber>999999999</vatNumber> <country>GR</country> <branch>1</branch> </issuer> <counterpart> <vatNumber>888888888</vatNumber> <country>GR</country> <branch>0</branch> <address>希望这是一种正确的方法,但所有 xml 都不适合
标签: c# xml xmldocument xmlnode