그래서, nodelist 및 documentbuilder를 사용하여 Android 앱에서 XML 파일을 구문 분석하려고합니다. 문제는 Documentbuilder.parse()는 항상 null을 반환하고 IOException을 던집니다. 파일 경로가 잘못되어있는 것과 관련이 있다고 생각합니다.Android XML 구문 분석, Documentbuilder가 예외를 throw합니다
public class EquiScoreActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ProtocolFactory.GetProtocolFactory().LoadProtocol("EquiScore/assets/Protocols/LC1_2008.xml");
}
}
public class ProtocolFactory
{
private static ProtocolFactory m_Instance = new ProtocolFactory();
Document dom;
private ProtocolFactory()
{
}
public static ProtocolFactory GetProtocolFactory()
{
return m_Instance;
}
public Protocol LoadProtocol(String filename)
{
Protocol output = null;
List<JudgementGroup> jGroups;
List<GeneralAssesment> gAssesment;
ParseXmlFile(filename);
ParseDocument();
return output;
}
private void ParseXmlFile(String filename)
{
//get the factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try
{
//Using factory get an instance of document builder
DocumentBuilder db = dbf.newDocumentBuilder();
//parse using builder to get DOM representation of the XML file
dom = db.parse(filename);
}
catch(ParserConfigurationException pce)
{
pce.printStackTrace();
}
catch(SAXException se)
{
se.printStackTrace();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
기본적으로 적절한 파일 경로 또는 XML을 구문 분석하는 다른 방법을 알아야합니다. 하나의 유형의 각 노드는 서로 다른 수의 자식 노드를 가질 수 있습니다. 따라서이 방법이 좋은 방법이라고 생각했습니다.
IOException이는 다음과 같습니다 "MalformedURLException가" "프로토콜이 찾을 수 없습니다 EquiScore/자산/프로토콜/LC1_2008.xml"
나는 파일 이름의 다양한 변화를 시도했지만 어쨌든이 오류가 보인다했습니다.
감사합니다, "파일을 찾을 수 없습니다"오류로 저를 가지고 적어도 그! :) 이제 내 파일 경로를 알아 내야합니다. 자산/프로토콜 /에 있지만 작동하지 않는 것 같습니다. – Bentebent
음, 자산 (assets/폴더의 내용)은 파일이나 URL이 아닌 AssetManager API를 통해 액세스합니다. – Jens
좋아요, 그래서 최선의 행동 방침은 무엇입니까? res/XML/Protocols와 같은 새로운 폴더를 만들고 거기에서 가져 오겠습니까? 편집 : 음, 나는 이것을 시도하고 있지만 어쨌든 파일을 찾을 수 없습니다. 나는 파일 경로 또는 모든 것에 대해 잘못된 길을 생각하고 있어야만 하는가? – Bentebent