2010-11-18 28 views
2

Ben lastconnected elemana benim yapılandırma ayrıntılarını ekleyebilir böylece aşağıdaki XML yapıya sahiptir:ekleme XML öğeleri ve nitelikleri

<?xml version="1.0" encoding="utf-8" ?> 
<lastconnectedServers> 
</lastconnectedServers > 

Şimdi ekleyerek elemanları ve attributes.For Örnek I gibi bazı XML operasyonu yapmak istiyorum (elemet lastconnectedServers içinde): yukarıda xml unsurları eklemek istediğiniz

<Server ip="" domain=""> 
     <SharedFolder name="" type=""/> 
     <SharedFolder name="" type =""/> 
     <SharedFolder name="" type =""/> 
</Server> 

böylece sonuç XML aşağıda gibi bir şey olacaktır bu:

<?xml version="1.0" encoding="utf-8" ?> 
<lastconnectedServers> 
    <Server ip="" domain=""> 
     <SharedFolder name="" type=""/> 
     <SharedFolder name="" type =""/> 
     <SharedFolder name="" type =""/> 
    </Server> 
</lastconnectedServers > 
+0

Libxm2'yi hangi liblo kullanıyorsunuz? –

+0

Böyle bir soru gönderirken, en azından birisinin sizin için tüm kodu yazmasını beklemek yerine, daha önce denediğinizi belirtmeniz gerekir. –

+0

@ OJ, XMLLite ile herhangi bir yere eklemek kullanmayan denedim. MSXML çıktı paramını kullanıyor olsaydı tamamen habersizdi ve kesinlikle hiçbir örnek yoktu ve bu yüzden gösterilecek geçerli bir kod yoktu. – Simsons

cevap

3

MSXML kullanarak örnek kod. COM hata denetimi atlandı. Çünkü kod, COM kullanımı için ATL yardımcılarından dolayı biraz endişeli görünüyor, ancak programlama modeli, xml geliştiricileri tarafından oldukça iyi kabul edilen W3C DOM API'lerini izliyor.

CComPtr<IXMLDOMDocument2> spDoc; 
CComPtr<IXMLDOMElement> spServerElement, spSharedFolderElement; 
CComPtr<IXMLDOMNode> spServerNode, spLastConnectedServerNode; 
IXMLDOMNode* pInsertedNode; 
VARIANT_BOOL varSucc; 
CComBSTR bstrLastConnected = L"<?xml version=\"1.0\" encoding=\"utf-8\" ?> \ 
           <lastconnectedServers> \ 
           </lastconnectedServers >"; 

spDoc.CoCreateInstance(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER); 
spDoc->put_async(VARIANT_FALSE); 
spDoc->loadXML(bstrLastConnected, &varSucc); 

// Finds the lastConnectedServerNode node with XPath. 
spDoc->selectSingleNode(CComBSTR(L"/lastconnectedServers"), 
    &spLastConnectedServerNode); 

// Creates and appends Server node. 
spDoc->createElement(CComBSTR(L"Server"), &spServerElement); 
spServerElement->setAttribute(CComBSTR(L"ip"), CComVariant(L"")); 
spServerElement->setAttribute(CComBSTR(L"domain"), CComVariant(L"")); 
spLastConnectedServerNode->appendChild(spServerElement, &pInsertedNode); 

// Creates and appends the first SharedFolder elements. 
spDoc->createElement(CComBSTR(L"SharedFolder"), &spSharedFolderElement); 
spSharedFolderElement->setAttribute(CComBSTR(L"name"), CComVariant(L"")); 
spSharedFolderElement->setAttribute(CComBSTR(L"type"), CComVariant(L"")); 
spServerElement->appendChild(spSharedFolderElement, &pInsertedNode); 

// Creates the second and third SharedFolder elements... 

// Gets the xml content. 
CComBSTR bstrXml; 
spDoc->get_xml(&bstrXml); 

wprintf(L"%s", (LPCWSTR) bstrXml); 

Bu yardımcı olur umarım.

2
TiXmlDocument doc("YourFile.xml"); 
bool loadOkay = doc.LoadFile(); 

if(loadOkay) 
{ 
    //Variables for XML elements and attributes 
    TiXmlElement *pRoot; 
    //Get root element 
    pRoot = doc.RootElement(); 
      TiXmlElement * server = new TiXmlElement("Server"); // Create the new child element 
      server->LinkEndChild(pRoot);//Links the child to the parent 
      server->setAttribute("ip", ""); // Set attributes 
      server-setAttribute("domain",""); 
      foeach(/*Your Data as Value*/) 
      { 
       TiXmlElement * sharedFolder = new TiXmlElement("SharedFolder"); 
       server->LinkEndChild(sharedFolder); 
       server->setAttribute("name", ""); 
       server-setAttribute("type",""); 
      } 


} 
if(doc.SaveFile("YourOutput.xml")) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 

Bu, yeni çocukları kök öğeye eklemenize izin vermeli ve bunu yapmanın temel yapısıdır. TinxyXML hakkında daha fazla bilgi ve nasıl kullanılacağı hakkında daha fazla bilgi bulabilirsiniz. here

İlgili konular