Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 在c中更改xml值#_C#_Xml - Fatal编程技术网

C# 在c中更改xml值#

C# 在c中更改xml值#,c#,xml,C#,Xml,我从昨天开始就在做这个。我有一个XML文件,看起来像这样 <catalog> <captureInfo> <row>5</row> <col>5</col> </captureInfo> <patientInfo> <name>XYZ</name> <detail>details here</detail>

我从昨天开始就在做这个。我有一个XML文件,看起来像这样

<catalog>
  <captureInfo>
    <row>5</row>
    <col>5</col>
  </captureInfo>

  <patientInfo>
    <name>XYZ</name>
    <detail>details here</detail>
  </patientInfo>

  <imageData>
    <r0c0>
      <contrastFlag>true</contrastFlag>
    </r0c0>
    <r0c1>
      <contrastFlag>true</contrastFlag>
    </r0c1>
  </imageData>
</catalog>

谁能告诉我哪里出了问题,还有什么更好/更快的方法吗?

首先,您的XML格式不正确,结尾应该与“catalog”匹配。为什么不这样做:

string xml = @"<catalog>
  <captureInfo>
    <row>5</row>
    <col>5</col>
  </captureInfo>

  <patientInfo>
    <name>XYZ</name>
    <detail>details here</detail>
  </patientInfo>

  <imageData>
    <r0c0>
      <contrastFlag>true</contrastFlag>
    </r0c0>
    <r0c1>
      <contrastFlag>true</contrastFlag>
    </r0c1>
   </imageData>
</catalog>";

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xml);
xdoc.SelectSingleNode("//catalog/imageData/r0c0/contrastFlag").InnerText = "false";
stringxml=@”
5.
5.
XYZ
这里的细节
真的
真的
";
XmlDocument xdoc=新的XmlDocument();
LoadXml(xml);
xdoc.SelectSingleNode(“//catalog/imageData/r0c0/contractFlag”).InnerText=“false”;

首先,您的XML格式不正确,结尾应该与“目录”匹配。为什么不这样做:

string xml = @"<catalog>
  <captureInfo>
    <row>5</row>
    <col>5</col>
  </captureInfo>

  <patientInfo>
    <name>XYZ</name>
    <detail>details here</detail>
  </patientInfo>

  <imageData>
    <r0c0>
      <contrastFlag>true</contrastFlag>
    </r0c0>
    <r0c1>
      <contrastFlag>true</contrastFlag>
    </r0c1>
   </imageData>
</catalog>";

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xml);
xdoc.SelectSingleNode("//catalog/imageData/r0c0/contrastFlag").InnerText = "false";
stringxml=@”
5.
5.
XYZ
这里的细节
真的
真的
";
XmlDocument xdoc=新的XmlDocument();
LoadXml(xml);
xdoc.SelectSingleNode(“//catalog/imageData/r0c0/contractFlag”).InnerText=“false”;

以下是一种使用LINQ替换所有实例的方法。我刚刚写了一个新文件来保存源代码

StreamReader stream = new StreamReader(@"c:\test.xml");
XDocument doc = XDocument.Load(stream);

IEnumerable<XElement> flags = doc.Descendants("contrastFlag");

foreach (XElement e in flags)
{
      e.Value = "false";
}

doc.Save(@"c:\test2.xml");
StreamReader-stream=newstreamreader(@“c:\test.xml”);
XDocument doc=XDocument.Load(流);
IEnumerable flags=文档子体(“对比标志”);
foreach(标志中的元素e)
{
e、 Value=“false”;
}
doc.Save(@“c:\test2.xml”);

以下是一种使用LINQ替换所有实例的方法。我刚刚写了一个新文件来保存源代码

StreamReader stream = new StreamReader(@"c:\test.xml");
XDocument doc = XDocument.Load(stream);

IEnumerable<XElement> flags = doc.Descendants("contrastFlag");

foreach (XElement e in flags)
{
      e.Value = "false";
}

doc.Save(@"c:\test2.xml");
StreamReader-stream=newstreamreader(@“c:\test.xml”);
XDocument doc=XDocument.Load(流);
IEnumerable flags=文档子体(“对比标志”);
foreach(标志中的元素e)
{
e、 Value=“false”;
}
doc.Save(@“c:\test2.xml”);

您需要更改
contrastFlag
r0c0
的值。使用
XDocument
和Linq,或者仅仅使用XPath,您可能会有更好的运气<代码>变量节点=doc.GetElementsByTagName(“对比标志”)然后foreach该列表?您的XML无效-它以
catalog
元素开始,并尝试以
capture
元素结束。请说明如何将XML示例加载到
doc
object.doc.Load(“nameofxmlfilw.XML”);您需要更改
contrastFlag
的值,而不是
r0c0
。使用
XDocument
和Linq,或者仅仅使用XPath,您可能会有更好的运气<代码>变量节点=doc.GetElementsByTagName(“对比标志”)然后foreach该列表?您的XML无效-它以
catalog
元素开始,并尝试以
capture
元素结束。请说明如何将XML示例加载到
doc
object.doc.Load(“nameofxmlfilw.XML”);