Java XML字符串分析文档应具有较大的值,但该文档具有0

Java XML字符串分析文档应具有较大的值,但该文档具有0,java,xml,xpath,xml-parsing,xmlnodelist,Java,Xml,Xpath,Xml Parsing,Xmlnodelist,嘿,我正在使用下面的代码来解析XML字符串,并收集该XML字符串中显示的所有URL String theReturnedResult = convertStreamToString(connection.getInputStream()); DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try { builder

嘿,我正在使用下面的代码来解析XML字符串,并收集该XML字符串中显示的所有URL

String theReturnedResult = convertStreamToString(connection.getInputStream());
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;

try {
    builder = builderFactory.newDocumentBuilder();
    Document xmlDocument = builder.parse(new ByteArrayInputStream(theReturnedResult.getBytes()));

    XPath xpath = XPathFactory.newInstance().newXPath();
    String xpathExpression = "jp06:members/jp06:role-assignments/jp06:role-assignment/jp06:url";
    NodeList nodes = (NodeList) xpath.evaluate(xpathExpression, xmlDocument, XPathConstants.NODESET);
    //Document xmlDocument = builder.parse(new ByteArrayInputStream(theReturnedResult.getBytes()));

    System.out.print(nodes.getLength());

    for (int i = 0; i < nodes.getLength(); i++) {..........
String theReturnedResult=convertStreamToString(connection.getInputStream());
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=null;
试一试{
builder=builderFactory.newDocumentBuilder();
Document xmlDocument=builder.parse(新的ByteArrayInputStream(theReturnedResult.getBytes());
XPath=XPathFactory.newInstance().newXPath();
String xpathExpression=“jp06:members/jp06:role assignments/jp06:role assignment/jp06:url”;
NodeList节点=(NodeList)xpath.evaluate(xpathExpression、xmlDocument、XPathConstants.NODESET);
//Document xmlDocument=builder.parse(新的ByteArrayInputStream(theReturnedResult.getBytes());
System.out.print(nodes.getLength());
对于(int i=0;i
XML本身如下所示:

<?xml version="1.0" encoding="UTF-8"?><jp06:members xmlns:jp06="http://jazz.net/xmlns/prod/jazz/process/0.6/" xmlns:jp="http://jazz.net/xmlns/prod/jazz/process/1.0/" jp:total-members="68">
    <jp06:member>
        <jp06:url>https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/members/Bob</jp06:url>
        <jp06:user-url>https://zzzzz.zzzzz.zz:9443/jts/users/Bob</jp06:user-url>
        <jp06:role-assignments-url>https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/members/Bob/role-assignments</jp06:role-assignments-url>
        <jp06:role-assignments>
            <jp06:role-assignment>
                <jp06:url>https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/members/Bob/role-assignments/tester</jp06:url>
                <jp06:role-url>https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/roles/tester</jp06:role-url>
            </jp06:role-assignment>
            <jp06:role-assignment>
                <jp06:url>https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/members/Bob/role-assignments/default</jp06:url>
                <jp06:role-url>https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/roles/default</jp06:role-url>
            </jp06:role-assignment>
        </jp06:role-assignments>
        <jp06:role-assignments-editor-url>https://zzzzz.zzzzz.zz:9443/qm/_ajax-modules/com.ibm.team.process.manageProcessRolesAssignmentWidget?memberUrl=https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/members/Bob&amp;rolesUrl=https://zzzzz.zzzzz.zz:9443/qm/process/project-areas/_rutRzzzzzzzzzzzzzzzzz/roles</jp06:role-assignments-editor-url>
    </jp06:member>
    <jp06:member>.......

https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/_rutrzzzzz/members/Bob
https://zzzzz.zzzzz.zz:9443/jts/users/Bob
https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/_rutrzzzzz/成员/Bob/角色分配
https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/_rutrzzzzz/members/Bob/role assignments/tester
https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/RUTRZZZZZZZ/角色/测试人员
https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/_rutrzzzzz/members/Bob/role assignments/default
https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/_rutrzzzzz/角色/默认值
https://zzzzz.zzzzz.zz:9443/qm/_ajax-modules/com.ibm.team.process.manageProcessRolesAssignmentWidget?成员URL=https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/_rutrzzzzz/members/Bob&;rolesUrl=https://zzzzz.zzzzz.zz:9443/qm/process/project-区域/区域/角色
.......
问题是我没有得到任何东西:

文档[#文档:空]

xmlDocument[#document:null]


变量theReturnedResult中包含所有XML,因此我不确定DocumentxmlDocument为什么null

XPath似乎什么也不返回。您可以尝试一下(从jp06:members中删除s):

或最短形式:

//jp06:role-assignment/jp06:url
编辑:您是否可以尝试在本地执行此操作(在builder.parse之后设置.xml的路径)


当您尝试将xml放入具有值的xml中时,xml的转换[#document:null]似乎也不起作用。–StealthRT刚刚确定。Post已编辑。难道您忘了XPath表达式中的前导“/”?是否可以使用本地xml文件进行测试?
//jp06:role-assignment/jp06:url
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);

DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse("pathtoyour.xml");

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//jp06:role-assignment/jp06:url";
NodeList nodes = (NodeList) xpath.evaluate(expression, document, XPathConstants.NODESET);

System.out.println(nodes);