|
Hello everyone,
I had a weird case in an XML file some days ago.
I have an application to read/write/delete from XML file at a customer site, (i am only using XMLElements, InnerText...etc). Few days ago, i looked at the XML file, and i found out that the file is filled with SPACES for almost 300 lines, here's an example of what am talking about.
Thats the original document
<document>
<id>1
<fields>
<field>123
<field>333
<field>555
Here's what i found:
<document>
<id>1
<fields>
|
|
|
|
|
Actually, your XML is hidden since you didn't check the "Ignore HTML tags in this message (good for code snippets)" checkbox.
Since I don't know anything about the context of how this file got corrupt, it is very hard to speculate what happened.
|
|
|
|
|
Thanks for ur interest,
here's the original XML document what it is usually is:
<Document>
<Field>
<ID>1</ID>
<Name>123</Name>
</Field>
<Field>
<ID>2</ID>
<Name>234</Name>
</Field>
</Document>
and the corrupted XML file that i found was like:
<Document>
<Field>
<ID>1</ID>
<Name>123</Name>
</Field>
<Fie (and the rest of the XML is just spaces...that also include the root element, even the field tag is not completed!)
This issue occured only once, although the XML file is accessed hundreds of times a day!
|
|
|
|
|
Looks like your application may have thrown an exception during the writing the XML application and it had already allocated the disk space. So, you will see what was there on disk from previous discarded storage data before the writing of the XML file.
|
|
|
|
|
Hi,
Thanks for the reply
But is that even possible? whatever thrown exception, if you didn't apply save, it won't apply any changes.
If the exception is thrown during the saving, can this exception be simulated?
Thanks a lot!
|
|
|
|
|
Hi,
I was wondering if Visual Studio 2003 supports reading XML file generated by saving Word Document 2003 as XML?
I was trying to read word doc xml into an empty dataset just like a regular xml file but DuplicationNameException error persists. The word XML is basically well-formed but the data view for the xml is unable to display the structures.
Could someone help explain to me the reason why? Im still working on Visual Studio 2003 and if this is a new feature of word document 2003 that is not supported in VS2003, then I have no choice but to acquire VS2005.
My goal is to be able to load a word document xml in a server (maybe sql server) and then be able to read back that xml, load into a dataset, display in a view keeping all the formatting properties of the contents of the word document.
If anyone has any idea to do this within the boundary of the Visual Studio and C#, I would really appreciate the help.
Thanks so much!
Teddy
Teddy
|
|
|
|
|
I have no idea if this is possible, but you'll probably need to point your DataSet to the Microsoft XSD for XML formatted Word documents.
The duplicate name maybe because of a namespace issue in the XML ...
Why would you want to read the underlying Word XML into a DataSet anyway? Wouldn't you want to be able to read it back and load it back up into Word?
:..::. Douglas H. Troy ::..
Bad Astronomy |Development Blogging|Viksoe.dk's Site
|
|
|
|
|
hello, im trying to view the data in a xml file to show up in a combo box in vb using visual studio.NET 2003 can anyone help as i am new to this.
p.s i am using smart device application.
thanks
bhavz
|
|
|
|
|
Look up "data binding"! ComboBoxes bindable.
|
|
|
|
|
Hi,
I am trying to create an XML schema as follows:
<xs:element name="QueryResult">
<xs:complexType>
<xs:all>
<xs:element name="Domain" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="ServerName" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="AbuseAddress" minOccurs="0" type="xs:string"></xs:element>
</xs:all>
</xs:complexType>
</xs:element>
The result i obtain is in the following format:
<Domain>domain.com</Domain>
<ServerName>serverName</ServerName>
<AbuseAddress>AbuseAddress1</AbuseAddress>
<Domain>domain.com</Domain>
<ServerName>serverName</ServerName>
<AbuseAddress>AbuseAddress2</AbuseAddress>
but what i need is that all abuse addresses be dislayed together as:
<Domain>domain.com</Domain>
<ServerName>serverName</ServerName>
<AbuseAddress>AbuseAddress1</AbuseAddress>
<AbuseAddress>AbuseAddress2</AbuseAddress>
How do i modify my schema to obtain the above format?
Can someone help do this pls.
Thanks.
|
|
|
|
|
You schema leaves open a few questions on how the elements are hierarchally associated. "ServerName" and "Domain" are not related. Usually, servers are part of domains. Also, "AbuseAddress" is not associated to a "ServerName"! Usually, abuse address attack a certain server. IMHO, your schema design has flaws.
|
|
|
|
|
Hi,
The ServerName used here is the Name of the Whois Server that needs to be queried to obtain the abuse address of the stipulated domain.
When i return XML, i need to mention the name of the whois server(whois.abuse.net) that is being used to get the results, the domain being queried for as well as the result of the query(the abuse address).
Any suggestions on how i could improve my schema would be appreciated.
Thanks.
|
|
|
|
|
I suggest this format because you can record more than one domain and server in one file. Also, this format takes up less space.
<network>
<domain name="domain.com">
<server name="ServerName">
<abuse address="AbuseAddress1" />
<abuse address="AbuseAddress2" />
</server>
</domain>
</network>
|
|
|
|
|
Thanks for ur help.
I read the article u mentioned "Inferring DataSet Relational Structure from XML" and found it very useful. It cleared many of my concepts.
But after reading the article, i found that writing the schema i desired was not possible as i needed to build relations between the heirarchical tables in the schema;
and my schema tables did not have any key in common based on which i could create relations.
I have now used the XmlDocument and XmlNode class in order to write my results directly to an XML file. This is also makes it easier to create nested child nodes.
I appreciate the timely help u have provided.
Thanks.
|
|
|
|
|
Hi,
I am using a dataset which takes its schema from an xsd file that i have created.
The schema comprises nested nodes.
As an example,
<Customers>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
<Orders>
<OrderDate>1996-09-18</OrderDate>
<OrderDetails>
<OrderWeight>20kg</OrderWeight>
<ShipVia>International Air</ShipVia>
</OrderDetails>
</Orders>
</Customers>
Using the above schema, I need to set the values of the OrderDetails node i.e. order weight and shipvia in my dataset using C#.
Any help will be appreciated.
Thanks.
|
|
|
|
|
<Customers>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
<Orders>
<OrderDate>1996-09-18</OrderDate>
<OrderDetails>
<OrderWeight>20kg</OrderWeight>
<ShipVia>International Air</ShipVia>
</OrderDetails>
</Orders>
</Customers>
This won't work as structured. You need something like this:
<Customers>
<Customer>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
<Orders>
<OrderDate>1996-09-18</OrderDate>
<OrderDetails>
<OrderWeight>20kg</OrderWeight>
<ShipVia>International Air</ShipVia>
</OrderDetails>
</Orders>
</Customer>
</Customers>
Also, this is not a schema! The resulting schema with my modification is below. This creates four tables with hierarchal relationships which is usually an result of a JOIN operation on a SELECT relation query.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="Customer">
<xs:complexType>
<xs:sequence>
<xs:element name="CompanyName" type="xs:string" />
<xs:element name="Orders">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderDate" type="xs:date" />
<xs:element name="OrderDetails">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderWeight" type="xs:string" />
<xs:element name="ShipVia" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
|
|
|
Hi,
Thank u George L. Jackson for replying. I have corrected my schema.
The next problem i am facing is that this schema is saved in an XML schema file. I have created a dataset that would load this schema. The columns in my datatable correspond to the nodes above. How do i assign values to the child nodes of the order details node i.e OrderWeight and ShipVia?
DataSet dsRecords = new DataSet();
DataRow newrow = null;
newrow = dsRecords.Tables [ "Customers" ].NewRow( );
newrow["OrderWeight"] = "20kg";
When i try assigning values to these child nodes, it gives me an error that reads: OrderWeight does not belong to my main table. Do i need to create another datatable within the dataset ? How do i proceed?
Thanks.
|
|
|
|
|
Refer to "Inferring DataSet Relational Structure from XML" in the .NET Framework Developer's Guide.
|
|
|
|
|
I am calling datrelation.nested = true.
But I get the error - “Child row has multiple parents"
I am getting this because the dataset contains tables with such data.
E.g. Here is my hierarchy
Operator is parent of OperatorPriviligePair.
OperatorPriviligePair is parent of Privilege
But one privilege can be assigned to may operators. So the problem.
Have you written a method WriteXML to override this?
Or can you walk me through writing my own xml file with my dataset?
I will highly appreciate your help.
Savita
|
|
|
|
|
Hi
It will be helpful if you provide the exact xml format you want.
You can use the XmlTextWriter and loop thru the dataset for creating the exact structure and data.
Gokul
|
|
|
|
|
hi All,
I want to integrate crystal reports into my MFC app. I have already done this using an Access db as a data source. But what I really want to do is to use an XML file as a data source. How do i do this?
I tried to modify the connection string:
// Connection String
_bstr_t bstrAccessConnect ( L"DRIVER={Microsoft Access Driver (*.mdb)};"
L"DBQ=Database.MDB;"
L"DefaultDir=;"
L"UID=admin;PWD=;"
L"Mode=Read;");
but it didnt work. I have configured the ODBC dsn according to the CR XML v3.6 driver. It is correct because I can access the XML file as an ODBC dsn from the Crystal reports manually...So how do i do this in code???
PS: I hav Crystal Reports 8.5
|
|
|
|
|
You'll have to create a connection string that indicates the correct driver and DSN. The Server Explorer in Visual Studio can be helpful in for working out the details.
|
|
|
|
|
I suppose i cant use ADODB connection?(stupid question!)
I tried using ODBC but it didnt work...I am really new to MFC and crystal so i'm completely at a loss...could u pls giv me a sample?
this is what i tried:
CDatabase db;
CRecordset rec(&db);
db.OpenEx("DSN=RGenXML;",0);
CString g_SQLString="SELECT Name FROM Table";
rec.Open(AFX_DB_USE_DEFAULT_TYPE,g_SQLString,CRecordset::none);
The program crashes at this point saying i need to get a licence for my CRXML driver...that doesnt make sense because i can still use it to connect to crystal manually..?!
Please please help!
|
|
|
|
|
If i recall, somewhere, there's a file named IVCR.LIC that you need to have installed in Windows\System in order for this to work. Contact Crystal if you can't find it.
|
|
|
|
|
Hi,
I am trying to update a simple xml file with the following structure, in VB.NET. I am new to XML.
<code><WEIGHTAGES>
<CURRENT>
<P1>10</P1>
<P2>20</P2>
<P3>30</P3>
<P4>40</P4>
</CURRENT>
<PREVIOUS>
<P1>14</P1>
<P2>24</P2>
<P3>45</P3>
<P4>45</P4>
</PREVIOUS>
</WEIGHTAGES></code>
I just want to replace the values in the <code>"<CURRENT>" </code>and <code>"<PREVIOUS>"</code>with new values. No new nodes to be added, just modify these values in VB.NET. Can somebody tell me how to do this?
Abhishek
-- modified at 2:28 Tuesday 14th February, 2006
|
|
|
|