Fetching the XML without changing the order of the attributes
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
add a comment |
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
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
add a comment |
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
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
java xml xml-parsing xmlnode xml-attribute
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
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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.
Will try this. Thank you.
– anb004
Jan 4 at 5:02
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Will try this. Thank you.
– anb004
Jan 4 at 5:02
add a comment |
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.
Will try this. Thank you.
– anb004
Jan 4 at 5:02
add a comment |
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.
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.
answered Jan 3 at 14:08
Michael KayMichael Kay
111k663119
111k663119
Will try this. Thank you.
– anb004
Jan 4 at 5:02
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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