为啥我的代码没有像这里那样将给定的字符串解析为 xml?它不是重复的,因为我也使用了现有答案的帮助,但无法纠正它[重复]

Posted

技术标签:

【中文标题】为啥我的代码没有像这里那样将给定的字符串解析为 xml?它不是重复的,因为我也使用了现有答案的帮助,但无法纠正它[重复]【英文标题】:Why is my code not parsing a given string to xml as here? It is not duplicate as I used help from existing answers too but can't correct it [duplicate]为什么我的代码没有像这里那样将给定的字符串解析为 xml?它不是重复的,因为我也使用了现有答案的帮助,但无法纠正它[重复] 【发布时间】:2016-10-29 11:28:21 【问题描述】:
 public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException
    
        String fXml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
"<Emp id=\"1\">\n" +
"    <name>Pankaj</name>\n" +
"    <age>25</age>\n" +
"    <role>Developer</role>\n" +
"    <gen>Male</gen>\n" +
"</Emp>";
       DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXml);

    doc.getDocumentElement().normalize();

    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
    

我收到以下错误:

Exception in thread "main" java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

如何让工作变得直观?是的,问题出在第一行,但我不知道如何纠正。

【问题讨论】:

您使用的parse 方法是解析位于URI 参数处的XML 文件(String 参数表示URI,而不是XML 字符串)。所以基本上它是“如何解析 XML 字符串?”的副本。 . 【参考方案1】:

您需要使用 InputStream 而不是字符串本身将 xml 发送到解析器。试试这个:

    Document doc = dBuilder.parse(new InputSource(new  ByteArrayInputStream(fXml.getBytes("utf-8"))));

【讨论】:

以上是关于为啥我的代码没有像这里那样将给定的字符串解析为 xml?它不是重复的,因为我也使用了现有答案的帮助,但无法纠正它[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的图像没有像我指定的那样显示图像 - 在 Swift 中

STM32 - 为啥代码没有像它应该的那样修改寄存器?

传递给 CreateProcess 的参数没有像我预期的那样被解析

火狐有没有像Postman那样解析接口的扩展

为啥在旋转对象时它没有像我设置的那样旋转它? [复制]

无法理解 size_hint。为啥这个 .kv 简单的代码不能像我预期的那样工作?