Добавлено: 04 фев 2005, 18:01
Копать в сторону sscanf(); :-)
Встеречал как-то одного человека, который очень любил циклы с разборами, но при этом не мог отладить свой код.Копать в сторону sscanf();
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<config>
<section1>
<property name="name1" value="Is it difficult?" />
</section1>
</config>
Код: Выделить всё
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
try {
CComPtr<IXMLDOMDocument> spXMLDOM;
HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument));
if(FAILED(hr)) {
throw DOMError();
}
if ( spXMLDOM.p == NULL ) {
throw DOMError();
}
VARIANT_BOOL bSuccess = false;
hr = spXMLDOM->load(CComVariant(L"config.xml"), &bSuccess);
if ( FAILED(hr) ) {
throw DOMError();
}
if ( !bSuccess ) {
throw DOMError();
}
CComBSTR bstrSS(L"config/section1/property[@name=\"name1\"]/@value");
CComPtr<IXMLDOMNode> spXMLNode;
hr = spXMLDOM->selectSingleNode(bstrSS,&spXMLNode);
if ( FAILED(hr) ) {
throw DOMError();
}
if ( spXMLNode.p == NULL ) {
throw DOMError();
}
CComBSTR result;
spXMLNode->get_text(&result.m_str);
std::wcout<<(BSTR)result<<L'\n';
} catch (...) {
CoUninitialize();
throw;
}
return 0;
}
Я не любитель написания портируемых программ (мини-осей) на С++.А вот Херес умеет всё это делать без всяких com-овских извратов, кстати....
Код: Выделить всё
<?xml version="1.0" encoding="utf-8" ?>
<main>
<version>1.1</version>
<log_days>days.xml</log_days>
<passwords>passwd.xml</passwords>
<shop>
<id>1</id>
<name>Голубинка</name>
<data>d_golyb.xml</data>
<enabled>true</enabled>
</shop>
<shop>
<id>2</id>
<name>Баляева</name>
<data>d_bal.xml</data>
<enabled>true</enabled>
</shop>
<shop>
<id>3</id>
<name>Ладыгина</name>
<data>d_ladi.xml</data>
<enabled>true</enabled>
</shop>
Код: Выделить всё
using System;
using System.Data;
using System.IO;
using System.Xml;
using System.Windows.Forms;
namespace myXml
{
/// <summary>
/// Summary description for usexml.
/// </summary>
public class usexml
{
public DataSet xml;
private string file_name_xml = null;
public usexml(string filename)
{
this.file_name_xml = filename;
this.xml = new DataSet();
this.xml.ReadXml(this.file_name_xml);
this.xml.AcceptChanges();
}
}
}
Код: Выделить всё
usexml cxml = new usexml("_conf.xml");
object [] dat = new object [3];
DataTable table = cxml.xml.Tables["shop"];
foreach(DataRow row in table.Rows)
{
dat = row.ItemArray;
Console.WriteLine(dat[0].ToString() + dat[1].ToString());
}
Код: Выделить всё
// comment
// [b]id[/b];[b]name[/b];[b]family[/b];[b]otchestvo[/b]
1;Сергей;Петров;Иванович
2;Михаил;Сидоров;Валерьевич
3;Иван;Грозный;Васильевич