0

c# を使用して、次の xml ファイルの sourcePatientInfo の値を変更する方法。を使用して値を読み取ることができます。

var elem = (from n in xml.Descendants("Slot")
                        where n.Attribute("name").Value == "sourcePatientInfo"
                        select n).FirstOrDefault();

C#を使用して同じものを変更するには?

<?xml version="1.0" encoding="utf-8"?>
<rs:SubmitObjectsRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:rs="urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1" xmlns:rim="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1" xmlns="urn:oasis:names:tc:ebxml-regrep:rim:xsd:2.1">
<LeafRegistryObjectList>
<ObjectRef id="urn:uuid:93606bcf-9494-43ec-9b4e-a7748d1a838d" />
<ExtrinsicObject id="Document01" mimeType="application/dicom" objectType="urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1">
  <Name>
    <LocalizedString value="Physical" />
  </Name>
  <Description />         
  <Slot name="sourcePatientId">
    <ValueList>
      <Value>pid1^^^&amp;1.2.3&amp;ISO</Value>
    </ValueList>
  </Slot>
  <Slot name="sourcePatientInfo">
    <ValueList>
      <Value>PID-3|pid1^^^&amp;1.2.3&amp;ISO</Value>
      <Value>PID-5|Doe^John^^^</Value>
      <Value>PID-7|19560527</Value>
      <Value>PID-8|M</Value>
      <Value>PID-11|100 Main St^^Metropolis^Il^44130^USA</Value>
    </ValueList>
  </Slot>

c# を使用して値を変更したいと思います。方法を理解することができません。この問題を解決するためのヘルプをいただければ幸いです。

を変更したい

 <Slot name="sourcePatientInfo">
 <ValueList>
 <Value>PID-3|pid1^^^&amp;1.2.3&amp;ISO</Value> 
 <Value>PID-5|Doe^John^^^</Value> 

次の値に

 <Slot name="sourcePatientInfo"> 
 <ValueList> <Value>PID-3|MyPID</Value> 
 <Value>PID-5|MyName</Value>

次のコードも試しましたが、

 XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xmlDoc1.NameTable);
 namespaceManager.AddNamespace("rs", "urn:oasis:names:tc:ebxml-regrep:registry:xsd:2.1");
 var query = "/rs:SubmitObjectsRequest/LeafRegistryObjectList/ExtrinsicObject";
 XmlNodeList nodeList = xmlDoc1.SelectNodes(query, namespaceManager);

 foreach (XmlNode node1 in nodeList)
 {
   if (node1.Attributes["Slot"].Value == "sourcePatientInfo")
   {
      node1.Attributes["ValueList"].Value = "Myvalue";
    }
  }

このコードでは、nodelist.count は常にゼロです :-(。問題の解決にご協力ください。

4

2 に答える 2