如何将内部文本插入空xml元素?

use*_*293 7 c# xml asp.net xmldocument

我有一个xmldocument,我正在加载xml.

xml看起来像这样:

<Table1>
  <buyer_id>0</buyer_id>
  <buyername>CompanyA</buyername>
  <address1>123 Simpsons Dr.</address1>
  <address2/>
  <city>Springfield</city>
  <state>ST</state>
  <postalcode>12345</postalcode>
  <eaddress/>
  <phone/>
  <fax/>
</Table1>
Run Code Online (Sandbox Code Playgroud)

我正在循环查看每个CompanyA条目并相应地设置innertext.我正在使用以下代码将内部文本插入符合条件的元素:

XmlDocument dom = new XmlDocument();
dom.LoadXml(xmlString);

XmlNodeList elemList = dom.GetElementByTagName("Table1");
for(int i = 0; i < elemList.Count; i++)
{
   if(dom.GetElementsByTagName("buyername").Item(i).InnerText.Contains("CompanyA")
   {
      dom.GetElementsByTagName("address1").Item(i).InnerText = "SomeInfo";
   }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,address1(123 Simpsons Dr.)的值将被"SomeInfo"替换.我想将"SomeInfo"插入到address2元素中,但是当我尝试使用时:

dom.GetElementsByTagName("address2").Item(i).InnerText = "SomeInfo";
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.我能够将innertext插入到已经有值的任何元素中,但是当元素为空时(例如<address2/>)我不能.思考?

Ani*_*dha 3

使用LINQ2XML。它完全替代了其他 XML api,就像肮脏的老白痴一样XmlDocument

XElement doc=XElement.Load("yourXml.xml");

foreach(var elm in doc.Descendants("Table1"))
{
if(elm.Element("buyername").Value=="CompanyA")
elm.Element("address2").Value="SomeInfo";
}
doc.Save("yourXml.xml");
Run Code Online (Sandbox Code Playgroud)