Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML文件转换问题_C#_.net_Xml_Visual Studio 2008 - Fatal编程技术网

C# XML文件转换问题

C# XML文件转换问题,c#,.net,xml,visual-studio-2008,C#,.net,Xml,Visual Studio 2008,我正在使用VSTS2008+C#+.NET3.5将下面的输入XML文件转换为目标格式。可以有任意数量的图像元素。列表中提供了新的价格信息 有没有快速实现转换功能的方法 源格式 <?xml version="1.0"?> <Metadata version="1"> <Owner>George</Owner> <Image> <x>100</x> </Image> <Ima

我正在使用VSTS2008+C#+.NET3.5将下面的输入XML文件转换为目标格式。可以有任意数量的图像元素。列表中提供了新的价格信息

有没有快速实现转换功能的方法

源格式

<?xml version="1.0"?>
<Metadata version="1">
  <Owner>George</Owner>
  <Image>
    <x>100</x>
  </Image>
  <Image>
    <x>200</x>
  </Image>
</Metadata>

乔治
100
200
目的地格式

<?xml version="1.0"?>
<Metadata version="1">
  <Owner>George</Owner>
  <Image>
    <x>100</x>
    <Price>200</Price>
  </Image>
  <Image>
    <x>100</x>
    <Price>300</Price>
  </Image>
</Metadata>

乔治
100
200
100
300

非常简单:选择所有
节点并向其添加新的
子节点:

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("your-filename-here.xml");

XmlNodeList imageList = xmldoc.SelectNodes("/Metadata/Image");

foreach(XmlNode node in imageList)
{
   XmlElement priceElement = xmldoc.CreateElement("Price");
   priceElement.InnerText = "300";  // or whatever it is

   node.AppendChild(priceElement);
}

xmldoc.Save("your-new-xml-file-name-here.xml");
我希望这样就可以了


Marc

非常简单:选择所有
节点并向其添加新的
子节点:

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("your-filename-here.xml");

XmlNodeList imageList = xmldoc.SelectNodes("/Metadata/Image");

foreach(XmlNode node in imageList)
{
   XmlElement priceElement = xmldoc.CreateElement("Price");
   priceElement.InnerText = "300";  // or whatever it is

   node.AppendChild(priceElement);
}

xmldoc.Save("your-new-xml-file-name-here.xml");
我希望这样就可以了


马克

我也在做同样的练习,这是一个简单的方法it@Abel:我喜欢直截了当的-我不喜欢“黑色巫术”,你看不到发生了什么:-@George2:是的,当然,像
这样的字符显然不能在XML文档的.InnerText中。您可以为这些内容使用占位符(例如
),或将内部文本放入
section@George2:请参阅关于该主题的另一个问题:使用XmlSerializer应该可以正常工作,是的。你可以随时检查你的字符串中那些“危险”的字符,并且只有当其中任何一个确实存在的时候才使用CDATA区域——但显然,在创建文件时这需要做更多的工作it@Abel:我喜欢直截了当的-我不喜欢“黑色巫术”如果看不到发生了什么:-)@George2:当然,像
这样的字符显然不能在XML文档的.InnerText中。您可以为这些内容使用占位符(例如
),或将内部文本放入
section@George2:请参阅关于该主题的另一个问题:使用XmlSerializer应该可以正常工作,是的。你可以随时检查你的字符串中那些“危险”的字符,并且只有当其中任何一个字符确实存在时才使用CDATA区域——但是显然,在创建文件时这需要做更多的工作。谢谢你的建议,马克!谢谢你的建议,马克!