0

我有一个像这样的根 XML:

<Root xmlns="http://schemas.datacontract.org/2004/07/" xmlns:t="http://www.w3.org/2001/XMLSchema-instance">
   <Element1>somevalue</Element1>
   <Data/>
<Root>    

我需要在数据元素节点下添加一些与客户相关的信息,例如(姓名、年龄等)。所以,我期望的结果如下:

<Root xmlns="http://schemas.datacontract.org/2004/07/" xmlns:t="http://www.w3.org/2001/XMLSchema-instance">
   <Element1>somevalue</Element1>
   <Data>
     <Name t:type="xs:string" xmlns="" xmlns:s="http://www.w3.org/2001/XMLSchema">Elvis</Name>
     <Address t:type="xs:string" xmlns="" xmlns:s="http://www.w3.org/2001/XMLSchema">Some address</Address>
   </Data>
<Root>

我怎样才能做到这一点?我正在使用 C#、.net 4.0。

我正在尝试下面的代码,但没有得到我期望的结果:

string strTemplate = "<Root xmlns='http://schemas.datacontract.org/2004/07/' xmlns:t='http://www.w3.org/2001/XMLSchema-instance'><Element1>somevalue</Element1><Data/></Root>";

        XDocument doc = XDocument.Parse(strTemplate);
        XElement rootElement = doc.Root;

        XElement dataElement = null;




        foreach (XElement descendant in rootElement.Descendants())
        {
            if (descendant.Name.LocalName == "Data")
            {
                dataElement = descendant;
                break;
            }
        }


        string cusData = "<CustData><Name>Elvis</Name><Address>XYZ</Address></CustData>";
        XElement customerElements = XElement.Parse(cusData);

        if (dataElement != null)
        {
            foreach (XElement custAttributes in customerElements.Descendants())
            {
                XNamespace t = "http://www.w3.org/2001/XMLSchema-instance";
                var attribute = new XAttribute(t + "type", "xs:string");
                 var attribute1 = new XAttribute(XNamespace.Xmlns + "s", "http://www.w3.org/2001/XMLSchema");
                XElement element = new XElement(custAttributes.Name, attribute, attribute1);
                element.Value = custAttributes.Value;

                dataElement.Add(element);
            }

        }
   string strPayload = doc.ToString();

当我执行代码时,我得到以下信息:

<Data xmlns="http://schemas.datacontract.org/2004/07/">
  <Name t:type="xs:string" xmlns:t="http://www.w3.org/2001/XMLSchema-instance"   xmlns="">Elvis</Name>
  <Address t:type="xs:string" xmlns:t="http://www.w3.org/2001/XMLSchema-instance" xmlns="">XYZ</Address>
</Data>

任何帮助表示赞赏!

谢谢,米

4

0 回答 0