DocumentBuilder 解析在命中 '&' 时会中断字符串

发布于 2024-10-20 06:34:38 字数 1035 浏览 2 评论 0原文

我有这个 xml:
<用户>
<名称>H&amp; M

并使用以下代码解析它:


    DocumentBuilder documentBuilder = null;
            Document document = null;

try { documentBuilder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); document = documentBuilder.parse(is); } catch (Exception e) { return result; } NodeList nl = document.getElementsByTagName(XML_RESPONSE_ROOT); if (nl.getLength() > 0) { resp_code = nl.item(0).getAttributes().getNamedItem( XML_RESPONSE_STATUS).getNodeValue(); if (resp_code.equals(RESP_CODE_OK_SINGLE)) { nl = document .getElementsByTagName(XML_RESPONSE_TAG_CONTACT); NodeList values = nl.item(i).getChildNodes();

等等..

当我通过以下方式获取节点值时:node.getNodeValue();

我只得到 & 符号之前的内容,即使 & 符号被转义,

我想得到整个字符串:“H & M”

谢谢

i have this xml:
<user>
<name>H & M</name>

and i parse it using this code:


    DocumentBuilder documentBuilder = null;
            Document document = null;

try { documentBuilder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); document = documentBuilder.parse(is); } catch (Exception e) { return result; } NodeList nl = document.getElementsByTagName(XML_RESPONSE_ROOT); if (nl.getLength() > 0) { resp_code = nl.item(0).getAttributes().getNamedItem( XML_RESPONSE_STATUS).getNodeValue(); if (resp_code.equals(RESP_CODE_OK_SINGLE)) { nl = document .getElementsByTagName(XML_RESPONSE_TAG_CONTACT); NodeList values = nl.item(i).getChildNodes();

etc..

when i get the node value by: node.getNodeValue();

i get only what's before the ampersand, even though the ampersand is escaped

i want to get the whole string: "H & M"

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

趴在窗边数星星i 2024-10-27 06:34:38

这取决于 XML 文档的构造方式。特别是,“H & M”中可以有多个相邻的文本节点,而您的代码希望它只有一个。在获取其值之前尝试使用nodeVariable.normalize()。

根据 DOM 解析器 API:“normalize() - 将此节点下的子树的完整深度中的所有文本节点(包括属性节点)放入“正常”形式,其中仅结构(例如,元素、注释、处理指令) 、CDATA 部分和实体引用)分隔文本节点,即既没有相邻的文本节点,也没有空的文本节点......”

It depends on how your XML document was constructed. In particular, it can have multiple adjucent Text nodes in "H & M" while your code expects it to be just one. Try to use nodeVariable.normalize() before getting its value.

According to DOM parser API: "normalize() - Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes..."

仙气飘飘 2024-10-27 06:34:38

找到“name”元素并调用getTextContent()

Find the "name" Element and call getTextContent().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文