0

独自の SOAP リクエストを送信するために、SOAP リクエストで 1 つの要素の xml データを編集したいと考えています。

以下はリクエストの例です

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:web="http://webservice/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:ca>
         <type1>
            <ad>2013-07-19</ad>
            <name>abcd 13071502</name>
            <taker>
               <taker>TEST</taker>
               <emailAddress>test@test.com</emailAddress>
               <name>nameTest</name>
               <phoneNo>007007007</phoneNo>
               <takerUid>1234</takerUid>
            </taker>
         </type1>
         <type2>4</type2>
         <type3>peace</type3>
         <type4>test</type4>
      </web:ca>
   </soapenv:Body>
</soapenv:Envelope>

「name」要素の値を「abcd 13071502」から「abcd」に変更したいと思います。C#で次のコードを使用して、「name」要素からデータを抽出し、値を編集できました

System.Xml.XmlTextReader xr = new XmlTextReader(@filePath);
while (xr.Read())
{
if (xr.LocalName == "name")
    {
        xr.Read();
        currentNameValue = xr.Value;
        int cnvLen = currentNameValue.Length;
        string cnvWOdate = currentNameValue.Substring(0, cnvLen-8);
        string newNameValue = cnvWOdate+currTimeDate;
        break;
    }
}

ただし、値を編集してファイルを保存する方法がわかりませんでした。どんな助けでも大歓迎です。ありがとうございました。

4

2 に答える 2

0
XmlDocument doc = new XmlDocument();
doc.Load("file path");

XmlNode nameNode = doc.SelectSingleNode("/Envelope/Body/ca/type1/name");

string currentNameValue = nameNode != null ? nameNode.InnerText : "name not exist";
int cnvLen = currentNameValue.Length;
string cnvWOdate = currentNameValue.Substring(0, cnvLen-8);
string newNameValue = cnvWOdate+currTimeDate;

nameNode.InnerText = newNameValue; //set new value to tag

ノードを取得ValueするInnerTextには、ノードが存在することを確認する必要があります。行string currentNameValueの形式は次のとおりです。

var variable = condition ? A : B;

基本的に、条件が真の場合、変数は A に等しく、それ以外の場合、変数は B に等しいと言っています。

于 2013-07-23T17:14:38.333 に答える