Fetching the XML without changing the order of the attributes












0















I am trying to fetch the xml from the file, but while fetching the order of the attributes are changing
I know it will not matter but in my case it does, as I am hashing the document



I am trying the below code but it is ordering the attributes in an alphabetical manner



File fXmlFile = new File("C:\Users\Desktop\abc.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
String xml=writer.toString();



this is the xml that I am trying to read
in the variable xml, I am getting the xml with the attributes sorted in an alphabetical order










share|improve this question























  • As you get the attributes in a fixed order, it means you can make a hash for structural identical XMLs. However it would not detect equal XMLs with moved attributes. Why then not make a hash on the file itself? Whitespace? For XML you might try a pull parser maybe.

    – Joop Eggen
    Jan 3 at 10:26













  • @JoopEggen I actually want to get an attribute from that xml, Store it , Remove that attribute from the xml and then hash it

    – anb004
    Jan 3 at 10:41













  • That means you want a hash of the document's content model, not just a file. To do that you need to compute their canonical form (whichever type suits you best) then compute the hash of it. They solve the problem you're describing by listing attributes sorted by name.

    – kumesana
    Jan 3 at 10:58











  • Will try this and update

    – anb004
    Jan 4 at 5:08
















0















I am trying to fetch the xml from the file, but while fetching the order of the attributes are changing
I know it will not matter but in my case it does, as I am hashing the document



I am trying the below code but it is ordering the attributes in an alphabetical manner



File fXmlFile = new File("C:\Users\Desktop\abc.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
String xml=writer.toString();



this is the xml that I am trying to read
in the variable xml, I am getting the xml with the attributes sorted in an alphabetical order










share|improve this question























  • As you get the attributes in a fixed order, it means you can make a hash for structural identical XMLs. However it would not detect equal XMLs with moved attributes. Why then not make a hash on the file itself? Whitespace? For XML you might try a pull parser maybe.

    – Joop Eggen
    Jan 3 at 10:26













  • @JoopEggen I actually want to get an attribute from that xml, Store it , Remove that attribute from the xml and then hash it

    – anb004
    Jan 3 at 10:41













  • That means you want a hash of the document's content model, not just a file. To do that you need to compute their canonical form (whichever type suits you best) then compute the hash of it. They solve the problem you're describing by listing attributes sorted by name.

    – kumesana
    Jan 3 at 10:58











  • Will try this and update

    – anb004
    Jan 4 at 5:08














0












0








0








I am trying to fetch the xml from the file, but while fetching the order of the attributes are changing
I know it will not matter but in my case it does, as I am hashing the document



I am trying the below code but it is ordering the attributes in an alphabetical manner



File fXmlFile = new File("C:\Users\Desktop\abc.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
String xml=writer.toString();



this is the xml that I am trying to read
in the variable xml, I am getting the xml with the attributes sorted in an alphabetical order










share|improve this question














I am trying to fetch the xml from the file, but while fetching the order of the attributes are changing
I know it will not matter but in my case it does, as I am hashing the document



I am trying the below code but it is ordering the attributes in an alphabetical manner



File fXmlFile = new File("C:\Users\Desktop\abc.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
String xml=writer.toString();



this is the xml that I am trying to read
in the variable xml, I am getting the xml with the attributes sorted in an alphabetical order







java xml xml-parsing xmlnode xml-attribute






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 3 at 10:18









anb004anb004

64




64













  • As you get the attributes in a fixed order, it means you can make a hash for structural identical XMLs. However it would not detect equal XMLs with moved attributes. Why then not make a hash on the file itself? Whitespace? For XML you might try a pull parser maybe.

    – Joop Eggen
    Jan 3 at 10:26













  • @JoopEggen I actually want to get an attribute from that xml, Store it , Remove that attribute from the xml and then hash it

    – anb004
    Jan 3 at 10:41













  • That means you want a hash of the document's content model, not just a file. To do that you need to compute their canonical form (whichever type suits you best) then compute the hash of it. They solve the problem you're describing by listing attributes sorted by name.

    – kumesana
    Jan 3 at 10:58











  • Will try this and update

    – anb004
    Jan 4 at 5:08



















  • As you get the attributes in a fixed order, it means you can make a hash for structural identical XMLs. However it would not detect equal XMLs with moved attributes. Why then not make a hash on the file itself? Whitespace? For XML you might try a pull parser maybe.

    – Joop Eggen
    Jan 3 at 10:26













  • @JoopEggen I actually want to get an attribute from that xml, Store it , Remove that attribute from the xml and then hash it

    – anb004
    Jan 3 at 10:41













  • That means you want a hash of the document's content model, not just a file. To do that you need to compute their canonical form (whichever type suits you best) then compute the hash of it. They solve the problem you're describing by listing attributes sorted by name.

    – kumesana
    Jan 3 at 10:58











  • Will try this and update

    – anb004
    Jan 4 at 5:08

















As you get the attributes in a fixed order, it means you can make a hash for structural identical XMLs. However it would not detect equal XMLs with moved attributes. Why then not make a hash on the file itself? Whitespace? For XML you might try a pull parser maybe.

– Joop Eggen
Jan 3 at 10:26







As you get the attributes in a fixed order, it means you can make a hash for structural identical XMLs. However it would not detect equal XMLs with moved attributes. Why then not make a hash on the file itself? Whitespace? For XML you might try a pull parser maybe.

– Joop Eggen
Jan 3 at 10:26















@JoopEggen I actually want to get an attribute from that xml, Store it , Remove that attribute from the xml and then hash it

– anb004
Jan 3 at 10:41







@JoopEggen I actually want to get an attribute from that xml, Store it , Remove that attribute from the xml and then hash it

– anb004
Jan 3 at 10:41















That means you want a hash of the document's content model, not just a file. To do that you need to compute their canonical form (whichever type suits you best) then compute the hash of it. They solve the problem you're describing by listing attributes sorted by name.

– kumesana
Jan 3 at 10:58





That means you want a hash of the document's content model, not just a file. To do that you need to compute their canonical form (whichever type suits you best) then compute the hash of it. They solve the problem you're describing by listing attributes sorted by name.

– kumesana
Jan 3 at 10:58













Will try this and update

– anb004
Jan 4 at 5:08





Will try this and update

– anb004
Jan 4 at 5:08












1 Answer
1






active

oldest

votes


















0














Attribute order has no meaning in XML, and tools that process XML are at liberty to change the order.



When you are comparing documents for equivalence (which you appear to be doing) then you should use comparison and hash functions that do not depend on the order of attributes.






share|improve this answer
























  • Will try this. Thank you.

    – anb004
    Jan 4 at 5:02











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54020278%2ffetching-the-xml-without-changing-the-order-of-the-attributes%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














Attribute order has no meaning in XML, and tools that process XML are at liberty to change the order.



When you are comparing documents for equivalence (which you appear to be doing) then you should use comparison and hash functions that do not depend on the order of attributes.






share|improve this answer
























  • Will try this. Thank you.

    – anb004
    Jan 4 at 5:02
















0














Attribute order has no meaning in XML, and tools that process XML are at liberty to change the order.



When you are comparing documents for equivalence (which you appear to be doing) then you should use comparison and hash functions that do not depend on the order of attributes.






share|improve this answer
























  • Will try this. Thank you.

    – anb004
    Jan 4 at 5:02














0












0








0







Attribute order has no meaning in XML, and tools that process XML are at liberty to change the order.



When you are comparing documents for equivalence (which you appear to be doing) then you should use comparison and hash functions that do not depend on the order of attributes.






share|improve this answer













Attribute order has no meaning in XML, and tools that process XML are at liberty to change the order.



When you are comparing documents for equivalence (which you appear to be doing) then you should use comparison and hash functions that do not depend on the order of attributes.







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 3 at 14:08









Michael KayMichael Kay

111k663119




111k663119













  • Will try this. Thank you.

    – anb004
    Jan 4 at 5:02



















  • Will try this. Thank you.

    – anb004
    Jan 4 at 5:02

















Will try this. Thank you.

– anb004
Jan 4 at 5:02





Will try this. Thank you.

– anb004
Jan 4 at 5:02




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54020278%2ffetching-the-xml-without-changing-the-order-of-the-attributes%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Mossoró

Error while reading .h5 file using the rhdf5 package in R

Pushsharp Apns notification error: 'InvalidToken'