首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在试图解析XML字符串时,没有向我抛出任何协议错误的URL异常

在试图解析XML字符串时,没有向我抛出任何协议错误的URL异常
EN

Stack Overflow用户
提问于 2015-10-21 04:30:23
回答 2查看 4.4K关注 0票数 0

当试图解析XML字符串时,我会得到一个格式错误的URL异常。

这里是堆栈跟踪:

代码语言:javascript
运行
复制
java.net.MalformedURLException: no protocol: <explanation>
<NodeExplanations>
    <IDAfterSkipProcessing>/Temporary/isMfs</IDAfterSkipProcessing>
    <NodeExplanation>
        <ID>/Temporary/isMfs</ID>
        <SkippedToIDForExplanationData>/Temporary/isMfs</SkippedToIDForExplanationData>
        <Value>false</Value>
        <Gist>Equals</Gist>
        <Scenario>NOT_EQUAL</Scenario>
        <Title>IsMfs</Title>
        <Phrase>
            <Text>isMfs</Text>
        </Phrase>
        <Question>
            <Text>isMfs</Text>
        </Question>
        <ExplanationText>
            <Text>We can't get any more details on </Text>
            <NodeName>
                <Text>isMfs</Text>
            </NodeName>
            <Text> right now.</Text>
        </ExplanationText>
        <InputNodes>
            <InputNodeEntry>
                <ID>/Return/ReturnData/IRS1040/IndividualReturnFilingStatusCd</ID>
                <Role>Value</Role>
                <Value>2</Value>
                <Type>CALCULATED_NODE</Type>
                <HasSubExplanations>false</HasSubExplanations>
            </InputNodeEntry>
            <InputNodeEntry>
                <ID>/Constants/IRS1040/FilingStatus/MarriedFilingSeparatelyCd</ID>
                <Role>Value</Role>
                <Value>3</Value>
                <Type>CONSTANT_NODE</Type>
                <HasSubExplanations>false</HasSubExplanations>
            </InputNodeEntry>
        </InputNodes>
        <Children>
            <ID>/Return/ReturnData/IRS1040/IndividualReturnFilingStatusCd</ID>
        </Children>
    </NodeExplanation>
</NodeExplanations>
</explanation>

    at java.net.URL.<init>(URL.java:585)
    at java.net.URL.<init>(URL.java:482)
    at java.net.URL.<init>(URL.java:431)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)

我不知道为什么,XML肯定是有效的,并且没有格式错误?

下面是执行解析的代码:

代码语言:javascript
运行
复制
static Document getDocument(String xml) throws FileNotFoundException {

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db;
    Document doc = null;

    try {
        db = dbf.newDocumentBuilder();
        doc = db.parse(xml);
        doc.getDocumentElement().normalize();
    } 
    catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    }
    return doc;
}

是什么导致了这一切,我该如何解决呢?任何帮助或帮助都将不胜感激,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-10-21 05:28:35

DocumentBuilder.parse(String)方法需要一个URI,然后该方法尝试打开URI。如果你想直接传递字符串的内容,你必须把它作为一个InputStream。

代码语言:javascript
运行
复制
DocumentBuilder db = ...;
String xml = ...;
db.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("utf-8"))));

这些文档可能会帮助http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/DocumentBuilder.html

票数 3
EN

Stack Overflow用户

发布于 2015-10-21 05:26:24

问题的解决实际上是解析方法。

基于这里:http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilder.html

根据文档,该方法解析(字符串uri),将给定URI的内容解析为XML文档,并返回一个新的DOM文档对象。

解决方案将作为byteStream读入

新ByteArrayInputStream(xml.getBytes("utf-8"))));(新InputSource)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33250982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档