-1

以下のxmlがあり、ループせずに各行にWF_PROCESSIDを設定し、c#で設定する必要があります。誰かが解決策を提案してくれませんか?

<RESP_WF_MAP>
 <ROW>
  <PLAN_FOR_RESP>Mombasa</PLAN_FOR_RESP> 
  <WF_PROCESSID>-9999</WF_PROCESSID> 
  <WF_PROCESSNAME /> 
  <DIRECT_MAP_YN>N</DIRECT_MAP_YN> 
  </ROW>
  <ROW>
  <PLAN_FOR_RESP>Mombasa-Changamwe Branch</PLAN_FOR_RESP> 
  <WF_PROCESSID>-9999</WF_PROCESSID> 
  <WF_PROCESSNAME /> 
  <DIRECT_MAP_YN>N</DIRECT_MAP_YN> 
  </ROW>
  <ROW>
  <PLAN_FOR_RESP>Mombasa-Mombasa Branch</PLAN_FOR_RESP> 
  <WF_PROCESSID /> 
  <WF_PROCESSNAME /> 
  <DIRECT_MAP_YN>N</DIRECT_MAP_YN> 
  </ROW>
</RESP_WF_MAP>

このループを排除したいので、便利なxml処理メソッドが必要です

for ( intIndex = 0 ; intIndex < intLength ; intIndex++ )
{
    xmlRowElement           = (XmlElement)xmlRowNodeList.Item(intIndex);
    strWorkFlowId           = DwXMLUtilBO.getElementTagValue(xmlRowElement,"WF_PROCESSID");  // Customized static method to acquire the element value

    if(strWorkFlowId.Trim().Equals(""))
    {
       DwXMLUtilBO.setElementTagValue(xmlRowElement,"WF_PROCESSID" ,strWfId); // Customized static method to set the element value
    }

}
4

2 に答える 2

0

XmlDocument次のように、カスタム クラスの代わりにクラスを使用してみてください。

            var xml = @"
<RESP_WF_MAP>
<ROW>
<PLAN_FOR_RESP>Mombasa</PLAN_FOR_RESP> 
<WF_PROCESSID>-9999</WF_PROCESSID> 
<WF_PROCESSNAME /> 
<DIRECT_MAP_YN>N</DIRECT_MAP_YN> 
</ROW>
<ROW>
<PLAN_FOR_RESP>Mombasa-Changamwe Branch</PLAN_FOR_RESP> 
<WF_PROCESSID>-9999</WF_PROCESSID> 
<WF_PROCESSNAME /> 
<DIRECT_MAP_YN>N</DIRECT_MAP_YN> 
</ROW>
<ROW>
<PLAN_FOR_RESP>Mombasa-Mombasa Branch</PLAN_FOR_RESP> 
<WF_PROCESSID /> 
<WF_PROCESSNAME /> 
<DIRECT_MAP_YN>N</DIRECT_MAP_YN> 
</ROW>
</RESP_WF_MAP>";

        var doc = new XmlDocument();
        doc.LoadXml(xml);
        var list = doc.GetElementsByTagName("WF_PROCESSID");

        foreach (XmlNode node in list) 
        {
            node.InnerText = "your new value";
        }

        Console.Write(doc.InnerXml);
        Console.ReadKey();
于 2013-02-20T05:03:33.227 に答える
0

XML へのリンク:

foreach (var rowElement in XDocument.Load("yourXml").Descendants("ROW"))
{
    var idElement = rowElement.Element("WF_PROCESSID");
    if (string.IsNullOrWhiteSpace(idElement.Value))
    {
        idElement.Value = strWfId;
    }
}
于 2013-02-20T04:52:25.890 に答える