-2

私はこの問題を抱えています。XML データがありますが、.xml 形式ではありません。

検索のキーワードに基づいて結果を表示する必要があり、値を xml 形式で返します。ただし、値を含まないノード (null 値) がいくつかあります。この値をエスケープするにはどうすればよいですか?

値のみを持つノード (null 以外のノード) を表示したい。ありがとう。

これは私のコードです。Javaプログラミング初心者です。できる限り助けが必要です。皆さんありがとう !

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                InputSource is = new InputSource();
                is.setCharacterStream(new StringReader(result));
                Document doc = db.parse(is);
                NodeList nodes = doc.getElementsByTagName("DOCUMENT");

                // iterate the DOCUMENT                
                out.println("<table border='0'>");
                int index_location=nodes.getLength()+1;
                for (int i = 0; i < nodes.getLength(); i++) {

                    locations_array+="[";

                    Element element = (Element) nodes.item(i); 

                    NodeList IDS = element.getElementsByTagName("IDS");
                    Element line = (Element) IDS.item(0);
                    out.println("<tr><td>Company ID :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList FULL_NAME = element.getElementsByTagName("FULL_NAME");
                    line = (Element) FULL_NAME.item(0);
                    out.println("<tr><td>Company Name :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");
                    locations_array+="'"+getCharacterDataFromElement(line)+"',";

                    NodeList AD_WEIGHT = element.getElementsByTagName("AD_WEIGHT");
                    line = (Element) AD_WEIGHT.item(0);
                    out.println("<tr><td>AD_WEIGHT :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList MAP = element.getElementsByTagName("MAP");
                    line = (Element) MAP.item(0);
                    out.println("<tr><td>Longitude and Latitude :</td><td>");

                    if (getCharacterDataFromElement(line)!="No data provided."){
                        String st = getCharacterDataFromElement(line);
                        String str[] = st.split(":", 2);
                        String latlong;
                        latlong = str[1];
                        out.println(latlong);
                        locations_array+="'"+latlong+"',";
                    }else{
                        out.println("No data provided.");
                        locations_array+="'0,0',";
                    }

                    out.println("</td></tr>");

                    NodeList STATE = element.getElementsByTagName("STATE");
                    line = (Element) STATE.item(0);
                    out.println("<tr><td>State :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList CITY = element.getElementsByTagName("CITY");
                    line = (Element) CITY.item(0);
                    out.println("<tr><td>City :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList ADDRESS = element.getElementsByTagName("ADDRESS");
                    line = (Element) ADDRESS.item(0);
                    out.println("<tr><td>Address :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList PHONE = element.getElementsByTagName("PHONE");
                    line = (Element) PHONE.item(0);
                    out.println("<tr><td>Phone No :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList CLASS_DESC = element.getElementsByTagName("CLASS_DESC");
                    line = (Element) CLASS_DESC.item(0);
                    out.println("<tr><td>CLASS_DESC :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList MAIN_CLASS = element.getElementsByTagName("MAIN_CLASS");
                    line = (Element) MAIN_CLASS.item(0);
                    out.println("<tr><td>Category :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList URL = element.getElementsByTagName("URL");
                    line = (Element) URL.item(0);
                    out.println("<tr><td>Website :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList EMAIL = element.getElementsByTagName("EMAIL");
                    line = (Element) EMAIL.item(0);
                    out.println("<tr><td>Email :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList DISPLAY_AD = element.getElementsByTagName("DISPLAY_AD");
                    line = (Element) DISPLAY_AD.item(0);
                    out.println("<tr><td>DISPLAY_AD :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList ADV_PATH = element.getElementsByTagName("ADV_PATH");
                    line = (Element) ADV_PATH.item(0);
                    out.println("<tr><td>ADV_PATH :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList SORT_NO = element.getElementsByTagName("SORT_NO");
                    line = (Element) SORT_NO.item(0);
                    out.println("<tr><td>SORT_NO :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    NodeList TOTAL_ADDRESS = element.getElementsByTagName("TOTAL_ADDRESS");
                    line = (Element) TOTAL_ADDRESS.item(0);
                    out.println("<tr><td>TOTAL_ADDRESS :</td><td>");
                    out.println(getCharacterDataFromElement(line));
                    out.println("</td></tr>");

                    out.println("<tr><td>&nbsp;</td><td>&nbsp;</td></tr>");

                    index_location--;
                    locations_array+="'"+index_location+"']";
                    //locations_array+=",";                    
                }
                out.println("</table>");

これはサンプルxmlです

<DOCUMENT>
          <IDS>53850_WP</IDS>
          <FULL_NAME>xxx</FULL_NAME>
          <AD_WEIGHT>60</AD_WEIGHT>
          <MAP>1111:1.12344556,111.67890</MAP>
          <STATE>xxx xxx</STATE>
          <CITY>xxxx</CITY>
          <ADDRESS>123 xxx xxxx xxx</ADDRESS>
          <PHONE>12-12344551</PHONE>
          <CLASS_DESC>Banks</CLASS_DESC>
          <MAIN_CLASS>Banks</MAIN_CLASS>
          <URL>www.qwe.com</URL>
          <EMAIL>qwer@qwe.com</EMAIL>
          <DISPLAY_AD />
          <ADV_PATH />
          <SORT_NO>123</SORT_NO>
          <TOTAL_ADDRESS>123</TOTAL_ADDRESS>
          <INLINE_IMAGE />
          <E_PRODUCT />
          <FIELD1 />
        </DOCUMENT>

<INLINE_IMAGE>サンプルから、 、、 のような null ノードがあり<E_PRODUCT>ます<FIELD1>。結果ページに表示されないようにするにはどうすればよいですか?

4

2 に答える 2

1

最善の方法は、テキスト値を入力しないことです。たとえば、それが要素である場合、値はになります<Element/>。オープンタグが自動的に閉じることに注意してください。スキーマ定義(XSD)を作成する必要がある場合に備えて、 nillable要素について読むことができます。

一方、属性はnillableタイプをサポートしていません。個人的には、属性をまったく入れないようにしています。XPath式で、属性\\Element[not(@value)]を持たない要素が見つかります。valueこれにより、null文字列と空の文字列を区別できます。

于 2012-05-09T04:33:55.453 に答える
0

XMLには、nullの概念も、それをエスケープする方法もありません。私には、2つの選択肢があるように思われます。

  1. null値が発生した場合は、タグとコンテンツの出力を省略してください
  2. null値を表すために、XMLスキーマでいくつかの規則を採用します。
于 2012-05-09T04:34:18.083 に答える