2015-01-12 6 views
0

Привет, я новичок в создании XML, я в основном не использовал его раньше, я всегда предпочитал json.XML XElement, создающий XML-документ

У меня есть решение, где я просто делаю это со строкой и конвертирую в объект XML, но как я могу это сделать с классом XElement?

Это документ:

<?xml version="1.0" encoding="utf-8"?> 
<requestblock version="3.67"> 
    <alias>ALIAS</alias> 
    <request type="AUTH"> 
     <operation> 
      <sitereference>test12345</sitereference> 
      <accounttypedescription>TEST</accounttypedescription> 
      <parenttransactionreference>12-3-4567</parenttransactionreference> 
     </operation> 
     <merchant> 
      <orderreference>Example recurring auth</orderreference> 
     </merchant> 
     <customer> </customer> 
     <billing> 
      <amount currencycode="GBP">1234</amount> 
      <subscription type="TEST"> 
      <number>1</number> 
      </subscription> 
     </billing> 
     <settlement/> 
    </request> 
</requestblock> 

У меня уже есть часть кода, как это:

 XElement address = 
      new XElement("alias", "TEST", 
      new XElement("request", new XAttribute("type", "AUTH"), 
      new XElement("City", "Mercer Island"), 
      new XElement("State", "WA"), 
      new XElement("Postal", "68042") 
     )); 

Но у меня есть проблема с псевдонимом, потому что он же закрыт после того, как все элементы, не указаны в том же обозначении:

<alias>TEST 
    <request type="AUTH"> 
     <City>Mercer Island</City> 
     <State>WA</State> 
     <Postal>68042</Postal> 
    </request> 
</alias> 

Как вы можете видеть, это проблема.

ответ

1

Вы устанавливаете псевдоним в качестве корневого элемента, который должен быть requestblock. Если вы начинаете с requestblock так:

XElement address = 
     new XElement("requestblock", new XAttribute("version",3.67), 
     new XElement("alias", "TEST"), 
     new XElement("request", new XAttribute("type", "AUTH"), 
     new XElement("City", "Mercer Island"), 
     new XElement("State", "WA"), 
     new XElement("Postal", "68042") 

It'l дать вам

<requestblock version="3.67"> 
    <alias>TEST</alias> 
    <request type="AUTH"> 
     <City>Mercer Island</City> 
     <State>WA</State> 
     <Postal>68042</Postal> 
    </request> 
</requestblock> 
Смежные вопросы